程序只会在没有连接到真正的终端时崩溃 - 如何调试?

时间:2013-10-26 03:47:30

标签: c terminal gdb

我有一个程序崩溃了

segfault at 1 ip 0000000000000001 sp 0000000008077d60 error 14

每当它没有连接到真实终端时,例如./program > log.txt &会崩溃。正常运行不会导致这种奇怪的行为。 我想看看gdb是否可以帮助我找到原因,但是当然只是在gdb中运行它不会触发错误。

然而是什么

echo r | gdb ./program

但是当程序崩溃时gdb会立即退出:

Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb) quit
A debugging session is active.

    Inferior 1 [process 15434] will be killed.

Quit anyway? (y or n) [answered Y; input not from terminal]

我已经尝试了echo -e "r\nbt" | gdb,但它不会有任何不同。

1 个答案:

答案 0 :(得分:3)

只是做:

gdb ./program

一旦你在那里,请执行:

run < log.txt

指向您的输入,或:

run > log.txt

根据需要重定向输出。