【问题标题】:Program crashes in debugger before anything happens在任何事情发生之前程序在调试器中崩溃
【发布时间】:2010-05-11 22:05:49
【问题描述】:

我正在使用 MinGW 工具链为 Windows XP 构建应用程序,它有时会意外崩溃。所以,我正在尝试使用调试器(Gdb),但程序在发生任何事情之前以代码 03 退出。事实上,我从 GDB 看到的只是:

[新线程 3184.0x7b8]
[新线程 3184.0xef8]

程序以代码 03 退出。

我怀疑依赖项(Qt、VTK 和 ITK,均使用 MinGW 构建)的动态链接失败。但是,当我正常运行程序时不会发生这种情况。或者如果发生这种情况,它似乎是间歇性的,并且在程序启动和运行之后很长时间。 注意:我也在使用 Cmake 进行交叉编译。

我该怎么办?我可以尝试什么?

【问题讨论】:

    标签: c++ debugging qt


    【解决方案1】:

    通过signal(SIGABRT, <callback>) 添加一个回调,以在它关闭进程之前捕获对中止的调用。如果在您点击 main() 之前发生这种情况,您可能不得不求助于静态全局和编译器技巧来捕获它。

    【讨论】:

    • 是的。当我们的断言宏被重新路由到 中定义的宏时,我必须弄清楚这一点。太棒了。
    • 很酷的东西,我感谢你的好主意,@MSN,我需要自己尝试一下 :)
    • 如果已经在 GDB 中,您也可以尝试设置几个断点:catch throwb raise,然后使用任何 args 运行您的程序。当引发异常或调用信号时,这应该会中断。
    【解决方案2】:

    代码 3 通常在段错误时返回。 尝试切换到Linux,用电栅栏调试程序。它可能会给你一些额外的见解。

    【讨论】:

    • 感谢您的建议,但崩溃不会发生在 Windows 以外的任何地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多