繁体   English   中英

如何调试trashed heap / no .dmp / user的机器

[英]How to debug trashed heap / no .dmp / user's machine

我有一个有两百年历史的C ++ / Win32程序,有数百个用户。 几天前,一位用户报告了以下崩溃。 它在程序收到任何用户输入之前在启动时发生。 没有人遇到这个问题。

问题签名:
问题事件名称:APPCRASH
应用程序名称:xyz.exe
应用版本:0.0.2.94
应用程序时间戳:50b92e99
故障模块名称:StackHash_dec5
故障模块版本:6.0.6002.18541
故障模块时间戳:4ec3e39f
例外代码:c0000374
例外抵消:000abc4f
操作系统版本:6.0.6002.2.2.0.768.3
区域设置ID:1033
附加信息1:dec5
附加信息2:cef9e6e9412cee8472af82d5cdb064b7
附加信息3:5d30
附加信息4:7ad67f8281216f819f54c76815aefb56

该程序使用SetUnhandledExceptionFilter处理程序来编写一个minidump,但用户告诉我没有minidump。 我猜这是正常的,因为它是代码c0000374(堆损坏)。

在用户报告问题后,我给了他一个特殊的构建,其中包含大量的跟踪语句,包括记录通过消息泵的每条消息,但我从中学到的是GetMessage收到的最后一条消息是我发送的新消息把这个特殊的版本作为调试内容的一部分。 该消息及其调用的代码不能成为崩溃的根源,因为我在崩溃开始后添加了它们。 也许这意味着崩溃发生在其他一些线程中,而不是处理消息的线程。 该程序在启动时会创建一堆线程。

任何人都可以提出调试策略吗? 我失去了没有.dmp文件。

只要您的应用程序崩溃并且不立即退出,即进程仍然存在,您可以使用procdump通过sysinternals( http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx )使用procdump -ma xxxx.exe写一个完整的内存转储,然后你可以使用WinDbg进行分析。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM