管道命令时gdb不会停止

时间:2017-03-03 15:53:22

标签: c gdb

以正常方式运行时,gdb会按预期停止:

(gdb) break main
(gdb) run
Starting program ...
Breakpoint 1, main ...

在管道运行时,gdb永不停止:

(gdb) run | cat
Starting program: /home/sds/z | cat
...
During startup program exited normally.
(gdb)

如何在管道时调试程序行为?

我的设置:

$ gdb --version
GNU gdb (GDB) Amazon Linux (7.6.1-64.33.amzn1)
$ uname -a
Linux datasci-1 4.4.19-29.55.amzn1.x86_64 #1 SMP Mon Aug 29 23:29:40 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ gcc --version
gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9)

最新完全更新的ubuntu(16.10)上的问题。

2 个答案:

答案 0 :(得分:0)

虽然输入和输出重定向工作,但您不能使用管道将正在调试的程序的输出传递给另一个程序;如果你试图这样做,GDB很可能会调试错误的程序。

https://www.sourceware.org/gdb/onlinedocs/gdb.html

答案 1 :(得分:0)

基于another answer

(gdb) run > >(cat)

请参阅Process Substitution