我想运行一个可执行文件,通过管道将它的标准输出重定向到我的程序,然后用 LLDB 调试我的程序。 所以,例如:
cat my_file | ./main
然后调试./main.
我知道 process launch -i my_file
,但这并不是我想要做的 - 我希望输出来自 cat 的标准输出(它可以是 -i 不会的任何其他可执行文件实现类似的行为)。
我在 help process launch
下看不到相关选项。
最佳答案
这不是 lldb 支持的选项。您可以通过运行获得几乎相同的效果:
(lldb) 进程附加-w -n main
然后转到命令行并运行 cat | ./main
命令。
lldb 在创建时将附加到名为 main 的进程。 lldb 通过轮询进程表来执行此操作,因此它不会在程序生命周期的一开始就停止。然而,它通常很早就捕获它(通常在 dyld 加载阶段)所以这对你来说可能不是问题。如果是 - 并且 main 是一个您可以重建的程序,一个解决方案是在 main 的开头放置类似这样的内容:
int go_on = 1
while (go_on) { sleep(1); }
然后当你附加时,做:
(lldb) expr go_on = 0
(lldb) continue
关于debugging - 如何通过管道将命令标准输出传递给 lldb 调试文件标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53817204/