- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个使用了两年的 C++/Win32 程序,它有数百个用户。几天前,一位用户报告了以下崩溃。在程序接收到任何用户输入之前,它发生在启动时。没有其他人遇到这个问题。
Problem signature:
Problem Event Name: APPCRASH
Application Name: xyz.exe
Application Version: 0.0.2.94
Application Timestamp: 50b92e99
Fault Module Name: StackHash_dec5
Fault Module Version: 6.0.6002.18541
Fault Module Timestamp: 4ec3e39f
Exception Code: c0000374
Exception Offset: 000abc4f
OS Version: 6.0.6002.2.2.0.768.3
Locale ID: 1033
Additional Information 1: dec5
Additional Information 2: cef9e6e9412cee8472af82d5cdb064b7
Additional Information 3: 5d30
Additional Information 4: 7ad67f8281216f819f54c76815aefb56
该程序使用 SetUnhandledExceptionFilter 处理程序来编写小型转储,但用户告诉我没有小型转储。我猜这是正常的,因为它是代码 c0000374(堆损坏)。
在用户报告问题后,我给了他一个带有大量跟踪语句的特殊构建,包括记录通过消息泵的每条消息,但我从中了解到的是 GetMessage 收到的最后一条消息是一条新消息作为调试内容的一部分,我放入那个特殊版本的消息。该消息及其调用的代码不可能是崩溃的根源,因为我在他的崩溃开始后添加了它们。也许这意味着崩溃发生在其他线程中,而不是处理消息的线程中。程序在启动时会创建一堆线程。
任何人都可以建议一个调试策略吗?没有 .dmp 文件我就迷路了。
最佳答案
只要您的应用程序崩溃并且没有立即退出,即进程仍然存在,您可以使用 sysinternals ( http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx ) 的 procdump 和 procdump -ma xxxx.exe
来编写完整的内存转储,然后您可以使用 WinDbg 对其进行分析。
关于c++ - 如何调试垃圾堆/没有.dmp/用户的机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13671807/
我是一名优秀的程序员,十分优秀!