gpt4 book ai didi

c++ - 程序在没有通知的情况下崩溃的原因可能是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:50 24 4
gpt4 key购买 nike

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

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

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

最佳答案

可能是:

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

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

关于c++ - 程序在没有通知的情况下崩溃的原因可能是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com