程序在没有通知的情况下崩溃的原因是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序在没有通知的情况下崩溃的原因是什么?相关的知识,希望对你有一定的参考价值。

我有一个C ++应用程序,当我执行某个操作时突然停止工作(单击gtk中的按钮)。我尝试调试它,为SIGTERM,SIGABORT,SIGILL等创建信号处理程序,用gcc函数编写回溯函数,尝试附加调试器等等。我只是没有得到任何输出,程序只是从内存中消失。

有没有我还没试过的技术?我不知道如何调试这个问题。

我忘了提到:这发生在Linux系统上(试过debian和ubuntu)。两者都带有X11(不是道路)

答案

它可能是:

  • 一个信号。默认情况下,gdb会在错误信号上停止,因此不需要自定义处理程序。
  • exit()函数和退出族的任何其他函数(如_exit_Exit等)。使用b exit设置断点。
  • 因为它是c ++,所以可以抛出异常。抛出异常时使用catch throw停止。
  • 最后一个线程退出。 b pthread_exit
  • 线程取消。 b pthread_cancel
  • main功能正常结束。使用反汇编在地址上设置断点。

如果所有这些都没有帮助,请在按下按钮之前附加到您的应用程序,在gdb中使用Ctrl + c暂停它。然后,按下按钮(窗口没有响应)。 gtk应用程序通常应该从X11队列调度该事件,即使它已暂停。使用nisi逐步进行装配调试。

以上是关于程序在没有通知的情况下崩溃的原因是什么?的主要内容,如果未能解决你的问题,请参考以下文章

jni调用崩溃的情况下如何在linux上查找失败的原因?

Android:应用程序由于未知原因而崩溃

iOS 上的 Expo 在没有错误的情况下崩溃了

在运行 ios 13 的设备上没有应用程序崩溃的情况下无法播放音频文件

如何找到切换按钮崩溃的原因?

Avalonia 通知导致应用程序崩溃