我开始使用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的情况下改变参数。还有更好的主意吗?
谢谢!
答案 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)