c++ - 用于分析故障转储的 WinDbg 在本地 pc 上不起作用

标签 c++ mfc windbg dump minidump

我开发了一个微型 MFC 应用程序,它将在服务器上 24 小时运行。 (Windows Server 2008 R2,x64)

我故意让应用程序崩溃,以查看它的小型转储文件是否已正确创建和工作,并且它可以与 WinDbg 一起使用。

这是我的做法。

0:000> .symfix c:\symbols
0:000> .sympath+ C:\Projects\*********\x64\Release
0:000> .reload
0:000> !analyze -v 
-> Works! I can see full call stack and the line where the error occured!

但是,当我在本地笔记本电脑(Windows XP、x86)上做同样的事情时 我在调用堆栈文本中看到的只是非常基本的信息,如下所示。 (它也没有显示我应该查看哪一行进行调试。)

STACK_TEXT:  
0012fd60 0040695c 00000004 dd0fbe7e 00d67d10 **************!CWnd::RunModalLoop+0xf7
0012fdac 004010e0 dd0fbcce 0056bae8 0056bae8 **************!CDialog::DoModal+0x130
0012ff1c 0050e492 00380032 00000000 7ffde000 **************!**************::InitInstance+0xa0
0012ff30 004f7bd7 00400000 00000000 00020934 **************!AfxWinMain+0x48
0012ffc0 7c7e7077 00380032 002d0033 7ffde000 **************!__tmainCRTStartup+0x11a
0012fff0 00000000 004f7c2a 00000000 00000000 kernel32!BaseProcessStart+0x23
-> Meaningless information in this case b/c the error occurs in OnBnClicked function.

我花了几个小时在谷歌上搜索,但在寻找这个问题的答案时感到迷茫。 为什么它不能仅在我的笔记本电脑上运行?

我应该检查什么?我错过了什么?任何想法将不胜感激。 提前致谢。

最佳答案

为了获得具有正确源代码行信息的合理调用堆栈,您将需要相同的不带私有(private)符号的 pdbs 从您的笔记本电脑访问,我还注意到您似乎已经将一些符号缓存到 c:\symbols 这些是否相同并且还解析 Windows 符号?

检查您的 visual c++ 设置以确保您没有从 pdb 中剥离私有(private)符号,当您尝试设置断点、搜索符号或执行崩溃分析时,它很可能会警告您,声明它是 无法验证校验和 或类似消息。

我还注意到您在 64 位服务器上运行您的应用程序,然后在 32 位笔记本电脑上运行,您运行的 WinDbg 版本是否正确是我的下一个问题,有 32 位和 64 位版本。

您使用的是什么版本的 windbg?各种版本经常存在错误,因此您可能需要检查您在笔记本电脑上运行的版本是否与服务器上运行的版本相同。

关于c++ - 用于分析故障转储的 WinDbg 在本地 pc 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9900546/

相关文章:

c++ - 当使用__block时,clang BlocksRuntime在可执行文件中嵌入 'obsolete compiler'警告

c++ - MFC 应用程序中的 Qt DLL - 如何使 QDialog *真正* 模态?

visual-studio - 低音库未链接,所有其他工作完美

c# - 创建 COM 接口(interface)指针在开发机器上有效,但会导致应用程序在其他机器上崩溃

multithreading - 在windbg 中分析!threadpool 和!threads 的输出

c# - 调试在 64 位环境中运行的 32 位应用程序

azure - 确定 Azure Web 角色(Windows Azure 加速器)中的非托管内存泄漏

c++ - 为什么代码没有从输入字符串中删除 "u"?

c++ - 将 UILabel 的内容转换为图像并将其保存到磁盘

c++ - vector 迭代器错误