我想运行一个可执行文件,通过管道将其标准输出重定向到我的程序,然后LLDB调试我的程序。 因此,例如:
cat my_file | ./main
,然后调试./main。
我知道process launch -i my_file
,但这并不是我想要做的-我希望输出来自cat的stdout(它可以是-i无法实现类似行为的任何其他可执行文件)。
我在help process launch
下看不到任何相关选项。
答案 0 :(得分:1)
lldb不支持该选项。您可以通过运行以下命令获得几乎相同的效果:
(lldb)进程附加-w -n主
然后转到命令行并运行List1
命令。
lldb在创建时将附加到名为main的进程。 lldb通过轮询进程表来做到这一点,因此它不会在程序生命的一开始就停止。但是,它通常很早就被捕获(通常在dyld加载阶段),因此这对您来说可能不是问题。如果它是-并且main是可以重建的程序,则一种解决方案是在main的开头放置如下内容:
cat | ./main
然后在附加时执行:
int go_on = 1
while (go_on) { sleep(1); }
答案 1 :(得分:1)
对于那些仍希望将shell命令输出作为参数传递给lldb的人。
您可以尝试的一种解决方案是使用命令的结果创建环境变量,然后将其作为参数传递给lldb。 lldb运行时,它将设置从环境变量获取的target.run-args选项。
在您的示例中,您将按照这些原则进行操作。
ARG =`cat my_file`
(回显$ ARG以验证结果是否是您想要的)
lldb-主$ ARG