2013-10-26 59 views
1

我有與程序只會在未連接到真實終端時崩潰 - 如何調試?

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了,但它不會表現任何不同。

+0

在gdb裏你應該可以使用run命令重定向你的程序的stdout:'(gdb)run> outfile'這是否可以重現問題? –

回答

3

只要做到:

gdb ./program 

,一旦你在裏面,這樣做:

run < log.txt 

在你的輸入以引導,或:

run > log.txt 

將輸出重定向, 如預期的。

相關問題