我开始使用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。有更好的主意吗?
谢谢你,谢谢
2条答案
按热度按时间pbossiut1#
反引号版本违反了lldb对反引号的使用,即“将反引号中的字符串作为当前内容中的表达式进行求值,并将内容替换到命令参数中”。反斜杠反引号应该可以工作,但在这种情况下,命令解析器似乎会丢弃反引号。请将有关此问题的bug提交给bug报告员lldb.llvm.org...
“$(”版本将在一个限制条件下工作,命令解析器通过在命令输入中查找选项开始,因此它将
-c
作为settings set
的选项。但你可以通过反斜杠保护“-”来解决这个问题,比如:字符串
cx6n0qe32#
只要在lldb中运行'runarg 1arg 2',就为我解决了这个问题!