我有一个C ++应用程序,当我执行某个操作时突然停止工作(单击gtk中的按钮)。我尝试调试它,为SIGTERM,SIGABORT,SIGILL等创建信号处理程序,用gcc函数编写回溯函数,尝试附加调试器等等。我只是没有得到任何输出,程序只是从内存中消失。
我还没有尝试过任何技术吗?我不知道如何调试这个问题。
我忘了提到:这发生在Linux系统上(试过debian和ubuntu)。两者都是X11(不是道路)
答案 0 :(得分:1)
可能是:
exit()
函数和退出系列中的任何其他函数(如_exit
,_Exit
等)。使用b exit
设置断点。catch throw
停止。b pthread_exit
。b pthread_cancel
。main
功能正常结束。使用反汇编在地址上设置断点。如果所有这些都没有帮助,请在按下按钮之前附加到您的应用程序,在 gdb 中使用 Ctrl + c 暂停它。然后,按下按钮(窗口没有响应)。 gtk应用程序通常应该从X11队列调度该事件,即使它已暂停。使用ni
和si
逐步进行装配调试。