我需要调试以另一个程序的输出为基础的程序。因此,将'feeder'的输出写入文件,并将其输出到'reader'不起作用。
正常运行:
# feeder | ./reader
这不是一个选项:
# feeder > data
# gdb ./reader
(gdb) run < data
答案 0 :(得分:2)
您可以暂停reader
并等待GDB附加,如here所述。
然后运行:
feeder | ./reader
在一个终端中,gdb -p $(pgrep reader)
在另一个终端中。
连接gdb后,让reader
继续,并正常调试。
<强>更新强>
现在您已经阐明了约束,另一种方法是使用命名管道:
mknod /tmp/.pipe p
feeder > /tmp/.pipe
gdb reader
(gdb) run < /tmp/.pipe