【问题标题】:Program will only crash when it's not connected to a real terminal - how to debug?程序只有在没有连接到真实终端时才会崩溃 - 如何调试?
【发布时间】:2013-11-05 07:45:25
【问题描述】:

我有一个程序崩溃了

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,但它的行为不会有任何不同。

【问题讨论】:

  • 在 gdb 中,您应该能够在运行命令上使用重定向来重定向程序的标准输出:(gdb) run > outfile 这样可以重现问题吗?

标签: c terminal gdb


【解决方案1】:

只要做:

gdb ./program

一旦你在那里,做:

run < log.txt

直接输入您的输入,或:

run > log.txt

根据需要重定向输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多