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

时间:2015-04-22 00:48:55

标签: 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的情况下改变参数。还有更好的主意吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

反引号版本正在运行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)