LLDB从外部程序或shell设置参数

bogh5gae  于 2023-08-07  发布在  Shell
关注(0)|答案(2)|浏览(123)

我开始使用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。有更好的主意吗?
谢谢你,谢谢

pbossiut

pbossiut1#

反引号版本违反了lldb对反引号的使用,即“将反引号中的字符串作为当前内容中的表达式进行求值,并将内容替换到命令参数中”。反斜杠反引号应该可以工作,但在这种情况下,命令解析器似乎会丢弃反引号。请将有关此问题的bug提交给bug报告员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)

字符串

cx6n0qe3

cx6n0qe32#

只要在lldb中运行'runarg 1arg 2',就为我解决了这个问题!

相关问题