C++ Microsoft小型转储文件不提供太多信息
我正在使用Microsoft Minidump功能,以便分析已发布程序中的崩溃 代码类似于此问题的答案: 通常,当我发生崩溃时,我可以在VisualStudio中打开崩溃转储文件,它会将我带到有问题的源代码行,这使得解决这些问题非常容易 但有时并不那么容易 我有一个崩溃转储文件,无法找到有问题的源代码行。为什么呢?我可以从这个转储文件中获得哪些有用的信息?关于大海捞针有什么建议吗 这就是我正在做的 我通过标记签出此版本的源代码 我将相应的pdb文件复制到与崩溃转储相同的文件夹中-文件为myprogram.exe.3140.dmp 然后,我使用用于构建exe的编译器Visual Studio 2012打开崩溃转储 然后我看到一些有用的信息: 上次写入时间2017年10月10日15:28:52 进程架构:x86 异常代码0xC0000005 tread试图读取或写入其没有相应访问权限的虚拟地址的异常信息。 存在堆信息 操作系统版本6.1.7601 模块: myprogram.exe 1.7.41.0 myprogram.dll 1.1.0.27 等 然后单击“仅使用本机调试” 然后,我得到一个对话框: myprogram.exe.3140.dmp中0x548BFFD5处未处理的异常:0xC0000005:访问冲突执行位置0x548BFFD5 在加载的模块中找不到当前堆栈帧。无法显示此位置的源 我单击“中断”按钮 然后它说框架不在模块中。在加载的模块中找不到当前堆栈帧。无法显示此位置的源 然后单击查看反汇编超链接并查看: 548BFD5C++ Microsoft小型转储文件不提供太多信息,c++,visual-studio,visual-studio-2012,crash,crash-dumps,C++,Visual Studio,Visual Studio 2012,Crash,Crash Dumps,我正在使用Microsoft Minidump功能,以便分析已发布程序中的崩溃 代码类似于此问题的答案: 通常,当我发生崩溃时,我可以在VisualStudio中打开崩溃转储文件,它会将我带到有问题的源代码行,这使得解决这些问题非常容易 但有时并不那么容易 我有一个崩溃转储文件,无法找到有问题的源代码行。为什么呢?我可以从这个转储文件中获得哪些有用的信息?关于大海捞针有什么建议吗 这就是我正在做的 我通过标记签出此版本的源代码 我将相应的pdb文件复制到与崩溃转储相同的文件夹中-文件为myp
问号是什么??。这是否表明存在悬空指针问题?还有什么?问号意味着地址0x548BFFD5(您的应用程序正在尝试执行)处的数据没有反汇编成任何有意义的数据 正如您所注意到的,您可能有一个悬空的指针,或者正在尝试执行一个不再存在的对象所指向的函数。或者您正试图执行一个不指向任何内容的函数指针
如果使用符号编译,则可以返回调用堆栈/堆栈跟踪,并查看问题从何处开始。问号表示地址0x548BFFD5(您的应用程序正在尝试执行)处的数据没有反汇编成任何有意义的数据 正如您所注意到的,您可能有一个悬空的指针,或者正在尝试执行一个不再存在的对象所指向的函数。或者您正试图执行一个不指向任何内容的函数指针
如果使用符号编译,您可以返回调用堆栈/堆栈跟踪,查看问题的起因。我并不完全奇怪您没有得到任何信息:
访问冲突执行位置0x548BFFD5
我并不完全奇怪您没有得到任何信息:访问冲突执行位置0x548BFFD5