首页 文章

在规定的时间后退出LLDB会话

提问于
浏览
0

我有一个用python编写的程序,用于在移动设备(iOS和Android)上进行自动测试 . 该程序的正确工作流程如下(对于烟雾测试):

  • 使用ios-deploy将可执行文件部署到USB连接设备(.ipa或.app)

  • 启动应用程序(调试过程) - >写入stdout .

  • 将输出写入Pipe - >这样就可以读取与它并行的调试过程的输出 .

  • 如果在输出中检测到搜索到的针,则重新启动设备(这是一个非常脏的解决方法,我将插入强制停止方法或类似的东西)

我的问题是:当在调试过程的输出中检测到针时,lldb会话被中断,但不会退出 . 要退出lldb会话,我必须重新连接设备或退出终端并再次打开它 .

是否有可能在lldb调用中添加类似“生存时间标记”的内容,以确定lldb会话应该运行多长时间才能自动退出?我可以想象如何退出lldb会话的另一种方法是在设备重新启动后再次加入会话然后退出它,但似乎lldb只是ios-deploy的子进程 . 因此,我没有发现任何访问lldb进程的可能性 .

1 回答

  • 1

    lldb中没有内置这样的东西,但可能你可以在Python中设置一个计时器并让它在适当的时候终止调试会话 .

    注意,当您重新启动设备时,从lldb到远程调试服务器的连接应该关闭,并且lldb应该检测到它已关闭并退出该进程 . 默认情况下,它不会退出,但可能无论您在调试器事件上等待什么,都可以检测调试对象的退出和退出,或者您需要它做什么 .

    注意,如果lldb正在等待来自debugserver的输入(如果程序正在运行),那么它应该自动注意到这一点,因为select调用将返回EOF . 但是如果在关闭连接时进程停止,lldb可能不会注意到它直到读取内容 .

    在后一种情况下,您应该能够让lldb对表示找到“needle”的停止做出反应,并手动终止调试会话 .

相关问题