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

Quit LLDB session after a defined amount of time

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

  1. 使用 ios-deploy

  2. 将可执行文件部署到 USB 连接的设备(.ipa 或 .app)
  3. 启动应用程序(调试过程)--> 写入标准输出。

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

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

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

是否有可能将 "time-to-live-flag" 之类的内容附加到 lldb 调用以确定 lldb 会话应该 运行 多长时间直到它自动退出?另一种我可以想象如何退出lldb会话的方法是在设备重启后再次加入会话然后退出它,但似乎lldb只是ios-deploy的子进程。因此,我还没有找到任何访问 lldb 进程的可能性。

lldb 中没有内置这样的东西,但大概您可以在 Python 中设置一个计时器,如果合适的话,让它终止调试会话。

请注意,当您重新启动设备时,从 lldb 到远程调试服务器的连接应该关闭,并且 lldb 应该检测到它关闭并退出进程。默认情况下它不会退出,但大概您等待调试器事件的任何内容都可以检测到调试对象的退出和退出或您需要它执行的任何操作。

注意,如果 lldb 正在等待来自调试服务器的输入(如果程序是 运行)那么它应该自动注意到这一点,因为 select 调用将 return 带有 EOF。但是,如果在关闭连接时进程停止,lldb 可能不会注意到它,直到它去读取一些东西。

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