python - 在定义的时间后退出 LLDB session

标签 python ios lldb

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

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

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

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

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

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

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

最佳答案

lldb 中没有内置这样的东西,但大概您可以在 Python 中设置一个计时器,并让它在合适的情况下终止调试 session 。

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

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

在后一种情况下,您应该能够让 lldb 对指示找到“针”的停止使用react,并手动终止调试 session 。

关于python - 在定义的时间后退出 LLDB session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841334/

相关文章:

python - Matplotlib:带有高度标签的子图条形图

python - 使用 Python 将 BLOB 图像转换为 PNG、JPG

ios - CommonCrypto XCode 9.0 无法从数据创建 key

ios - Swift - UIScrollView 的约束问题(以编程方式)

objective-c - 强制 obj-c 在访问 nil 属性时抛出异常

gcc - LLDB 不打印使用 gcc/g++ 编译的代码上的 std::vector 内容

python - 通过键从不同列获取值

python - 使用 phatomJS 和 selenium 滚动浏览网站

ios - Objective-C/iOS 内存管理问题

macos - 如何让lldb忽略EXC_BAD_ACCESS异常?