【问题标题】:Quit LLDB session after a defined amount of time在定义的时间后退出 LLDB 会话
【发布时间】:2016-04-25 12:59:38
【问题描述】:

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

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

  2. 启动应用程序(调试过程)-->写入标准输出。

  3. 将输出写入管道 --> 这样可以并行读取调试过程的输出。

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

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

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

【问题讨论】:

    标签: python ios lldb


    【解决方案1】:

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

    注意,当你重启设备时,从 lldb 到远程调试服务器的连接应该关闭,lldb 应该检测到它关闭并退出进程。默认情况下它不会退出,但大概你在调试器事件上等待的任何东西都可以检测到被调试者的退出和退出或者你需要它做的任何事情。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 2022-01-07
      相关资源
      最近更新 更多