使用-o运行命令后如何退出lldb

时间:2014-10-08 22:09:07

标签: lldb

我想从脚本中运行类似以下命令的内容:

lldb -f /path/to/my/file -o command1 -o command2 ... -o detach

有没有办法在执行后退出lldb而不进入交互模式?传入-o exit或-o quit失败,“aborting after_file命令执行,命令:'quit'失败。”使用或不使用exit / quit运行上述命令会使终端处于lldb提示符下,这会阻止我只运行此命令并将输出重定向到磁盘上的某个位置。

这样做的最终目标是在某些事情发生时按需获取命令的输出。此平台上没有Python解释器,因此这不是一个选项。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

这似乎对我有用:

$ xcrun lldb / bin / ls -o" b malloc" -o" run" -o"脚本导入操作系统; os._exit(1)"

(lldb)target create" / bin / ls"

当前可执行文件设置为' / bin / ls' (x86_64的)。

(lldb)b malloc

断点1:3位置。

(lldb)运行

流程640推出:' / bin / ls'下(x86_64)

(lldb)脚本导入os; os._exit(1)

进程640停止 * thread#1:tid = 0x11033,0x00007fff9374136b libsystem_malloc.dylib malloc, stop reason = breakpoint 1.2 frame #0: 0x00007fff9374136b libsystem_malloc.dylib malloc libsystem_malloc.dylib`malloc: - > 0x7fff9374136b:pushq%rbp    0x7fff9374136c:movq%rsp,%rbp    0x7fff9374136f:pushq%rbx    0x7fff93741370:pushq%rax

$(回到提示)

这很糟糕,但城堡的关键是:

-o "script import os; os._exit(1)"

sys.exit(1)没有工作(我们抓住它并阻止它退出LLDB),但os._exit()是一个开放的免费赠品。请随意考虑这个错误。

答案 1 :(得分:1)

是的,那只是一个错误。 " -o"在启动交互式解释器之前,所有命令都被收集并提供给子解释器以执行。不幸的是,"退出"刚刚退出副翻译。在TOT lldb中修复后,应该在很长时间内将其发布到正式的Apple版本中。