【发布时间】:2012-02-02 11:06:07
【问题描述】:
我正在调试一个非常大的 Qt-3 应用程序。应用程序做了很多预处理,然后接收到一个 SIGPIPE 信号。一旦我得到 SIGPIPE,我就会写下几个回溯条目。
#0 .. __write_nocancel () from libpthread.so
#1 .. _IceTransFreeConnInfo () from libICE.so.6
#2 .. _IceWrite () from libICE.so.6
#3 .. _IceFlush () from libICE.so.6
我们的应用程序有一个信号处理程序。我所做的是使用signal(SIGPIPE, SIG_IGN) 忽略SIGPIPE,认为即使我收到此信号,我的应用程序也会继续运行。但是现在我意识到它不会那样工作,如果我在收到 SIGPIPE 后继续,它就会存在。
我不知道如何调试这个问题。这个信号不是来自我们的应用程序直接调用的套接字。它来自 libICE。我对么?请提供一些有关如何调试的提示。
提前致谢。
【问题讨论】:
-
当应用程序本身
raise()es 发出信号时,您应该能够在调试器中捕捉到它。 -
@PlasmaHH:谁说过
raise()?