shell - 来自外部程序或 shell 的 LLDB 设置参数

标签 shell gdb lldb

我开始使用 LLDB 作为 GDB 的替代品。通常我可以为特定目标调用调试器

$ gdb target
(gdb) set args `python -c 'print "a"*200'`

或者,

$ gdb target
(gdb) set args $(python -c 'print "a"*200')

这意味着我可以在 shell 中调用 Python 并将其管道输出用作 GDB 中的参数。但是我不能在 LLDB 中做到这一点,即使 LLDB 在很多方面与 GDB 相似。

$ lldb target
(lldb) settings set target.run-args `python -c 'print "a"*200'`

我知道这可以通过

$ lldb target -- `python -c 'print "a"*200'`

然而,在一开始,我不能在不退出 LLDB 的情况下更改参数。有更好的主意吗?

谢谢!

最佳答案

反引号版本违反了 lldb 对反引号的使用,意思是“将反引号中的字符串作为当前内容中的表达式进行评估,并将内容替换为命令参数。反斜杠反引号应该有效,但它看起来像命令在这种情况下,解析器会删除反引号。请向 lldb.llvm.org 的错误报告者提交关于此的错误...

"$("版本将使用一个附带条件,命令解析器通过在命令输入中查找选项开始,因此它需要 -c 作为 settings set。但您可以通过反斜杠保护“-”来解决这个问题,例如:

(lldb) set set target.run-args  $(python \-c 'print "a"*200')
(lldb) run
Process 12940 launched: '/bin/ls' (x86_64)
ls: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa: No such file or directory
Process 12940 exited with status = 1 (0x00000001) 

关于shell - 来自外部程序或 shell 的 LLDB 设置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29785781/

相关文章:

linux - Ubuntu神秘代理

c++ - 堆栈溢出与段错误

c - 需要 __alignof__ 的调试符号

xcode - 带有属性的 LLDB 类型摘要 (N​​SManagedObject)

ios - 为什么“ self ”无法识别?

linux 内置读取命令标志

mysql - 如何修复命令 "mysql -v"上的错误

llvm - 使用 LLDB 调试 LLVM IR

shell - 如何在Windows Shell中指定当前目录?

linux - 馅饼基地址在gdb中是固定的