我有一个用python编写的程序,用于在移动设备(iOS和Android)上进行自动化测试。该程序的正确工作流程如下(烟雾测试):
使用ios-deploy将可执行文件部署到USB连接设备(.ipa或.app)
启动应用程序(调试过程) - >写信给stdout。
将输出写入Pipe - >这样就可以读取与它平行的调试过程的输出。
如果在输出中检测到搜索到的针,则重启设备(这是一个非常脏的解决方法,我将插入强制停止方法或类似的东西)
我的问题是:当在调试过程的输出中检测到针时,lldb会话被中断,但是没有退出。要退出lldb会话,我必须重新连接设备或退出终端并再次打开它。
是否有可能附加类似"生存时间标志"到lldb调用,以确定lldb会话应该运行多长时间,直到它自动退出?我可以想象如何退出lldb会话的另一种方法是在设备重新启动后再次加入会话然后退出它,但似乎lldb只是ios-deploy的子进程。因此,我没有找到任何访问lldb进程的可能性。
答案 0 :(得分:1)
lldb中没有内置这样的东西,但可能你可以在Python中设置一个计时器并让它在适当的时候终止调试会话。
注意,当您重新启动设备时,从lldb到远程调试服务器的连接应该关闭,并且lldb应检测到它已关闭并退出该进程。默认情况下,当它发生时,它不会退出,但可能无论你在调试器事件上等待什么,都可以检测到调试对象的退出和退出或者你需要它做什么。
注意,如果lldb正在等待来自debugserver的输入(如果程序正在运行),那么它应该自动注意到这一点,因为select调用将返回EOF。但是如果在关闭连接时停止进程,lldb可能会注意到这一点,直到它读取内容为止。
在后一种情况下,你应该能够让lldb对表示"针"找到了,并手动终止调试会话。