【发布时间】:2012-08-01 19:58:42
【问题描述】:
问题
我的应用程序似乎有问题,因为它意外崩溃。我正在尝试解决问题,但我遇到了以下问题:
在 Windows 7 上,当应用程序崩溃时,会出现以下窗口,而不是获取有关崩溃的一些有用信息:
问题
是否可以让 Windows (7) 显示一些实际有用的信息?像堆栈跟踪?内存转储?奇怪的错误代码?任何事物?我非常怀疑微软可以在这里帮助我......事实上,checking for a solution to the problem 从未找到任何应用程序的解决方案,我不知道为什么这个窗口甚至存在。
我记得在 Windows XP 上,有那个 错误报告 窗口,并且在某个地方有一个链接到另一个窗口,它实际上显示了一些信息。
我尝试了什么
我尝试使用信号处理自己处理应用程序崩溃。然而,使用 MinGW 的信号处理似乎很糟糕:写入空指针应该发送一个 SIGSEGV 信号,但程序崩溃了。在网上查找,我发现this 线程让我相信信号处理可能被破坏了。
在多线程中使用 GDB 给我带来了很多麻烦,因为要做一些时间敏感的事情。
其他说明
我正在 Windows 7 上工作(显然),使用 MinGW 编译器套件 Eclipse IDE。
【问题讨论】:
-
您使用的是什么 IDE? Visual Studio,代码块,其他? IDE 允许您在调试模式下运行您的应用程序,并查看失败的代码行。
-
我正在使用 Eclipse。我知道它在哪一行失败,我只是不知道为什么,所以一条错误消息或其他东西会很有用。调试不起作用,因为在那一行,我调用了一个 winapi 函数,没有可能出错的参数。这里的问题是缺少 Windows 错误处理程序提供的有用信息。
-
听起来问题是你没有调试。从开发环境运行或附加到 engine.exe 以进行带有符号加载的调试构建,您应该有一个调用堆栈来确定您做错了什么。如果仍然卡住,请在调试后在此处显示有问题的代码、错误、异常等。
-
@Tibi 这稍微缩小了问题的范围。你能显示失败的代码行吗?这似乎是缓冲区溢出问题或与内存管理有关的问题。否则,API 调用通常会返回错误代码,而不是崩溃。
-
您在 Windows 上使用 minidump 调试此类问题。您可以在显示此对话框时从 Taskmgr.exe 的“进程”选项卡中创建一个。
标签: c++ windows-7 error-handling signals mingw