我想从脚本中运行类似以下命令的内容:
lldb -f /path/to/my/file -o command1 -o command2 ... -o detach
Run Code Online (Sandbox Code Playgroud)
有没有办法在执行后退出lldb而不进入交互模式?传入 -o exit 或 -o quit 失败,并显示“正在中止 after_file 命令执行,命令:‘退出’失败。” 在有或没有退出/退出的情况下运行上述命令会使终端处于 lldb 提示符处,这会阻止我仅运行此命令并将输出重定向到磁盘上的某个位置。
这样做的最终目标是在某些事情发生时按需获取我的命令的输出。这个平台上没有 Python 解释器,所以这不是一个选项。有什么建议?
这似乎对我有用:
$ xcrun lldb /bin/ls -o "b malloc" -o "run" -o "script import os; os._exit(1)"
(lldb) 目标创建“/bin/ls”
当前可执行文件设置为 '/bin/ls' (x86_64)。
(lldb) b malloc
断点 1:3 个位置。
(lldb) 运行
进程 640 启动:'/bin/ls' (x86_64)
(lldb) 脚本导入操作系统;os._exit(1)
过程640停止*线#1:TID = 0x11033,0x00007fff9374136b libsystem_malloc.dylibmalloc, 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)"
Run Code Online (Sandbox Code Playgroud)
sys.exit(1) 不起作用(我们捕获它并阻止它退出 LLDB),但 os._exit() 是一个开放的免费赠品。随意认为这是一个错误。
是的,这只是一个错误。“-o”命令全部收集起来并交给子解释器在启动交互式解释器之前执行。不幸的是,“退出”只是退出子解释器。该问题已在 TOT lldb 中修复,不久后应该会成为 Apple 官方版本。
| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |