gpt4 book ai didi

c++ - 由于不匹配/缺少 *system* 二进制文件,故障转储中的调用堆栈无效?

转载 作者:行者123 更新时间:2023-11-28 03:50:24 25 4
gpt4 key购买 nike

当我在 Visual Studio 2005 中打开 Windows 崩溃转储时得到这个调用堆栈:

>   myprog.exe!app_crash::CommonUnhandledExceptionFilter(_EXCEPTION_POINTERS * pExceptionInfo=0x0ef4f318)  Line 41  C++
pdm.dll!513fb8e2()
[Frames below may be incorrect and/or missing, no symbols loaded for pdm.dll]
kernel32.dll!_UnhandledExceptionFilter@4() + 0x1c7 bytes
...

查看模块加载信息:

...
'DumpFM-V235_76_1_0-20110412-153403-3612-484.dmp': Loaded '*C:\Program Files\Common Files\Microsoft Shared\VS7Debug\pdm.dll', No matching binary found.
...

我们看到甚至没有加载这个二进制文件,因为用于分析转储的机器与生成转储的机器不同。

我目前无法访问这台机器——我能否以某种方式修复这个堆栈,或者我是否总是需要这个确切路径位置的确切二进制文件?

最佳答案

如果您绝对想在 Visual Studio 中调试此转储,那么您可以将系统 DLL 从生成转储的机器复制到您的 .dmp 文件所在的同一文件夹。这样,它将加载这些二进制文件,而不是试图在调试系统上的相同路径中找到它们,因为它们在原始系统上(可能包含相同模块的不同版本)。

正如 Naveen 指出的那样,在 WinDBG 中加载转储时不会遇到此问题(原因我还不明白)。这就是为什么当我从客户端获得转储时,我总是在 WinDBG 中分析它们。

如果您需要有关使用 WinDBG 进行故障转储分析的帮助,以下网站提供了有关该主题的全部信息:http://www.dumpanalysis.org/ .

关于c++ - 由于不匹配/缺少 *system* 二进制文件,故障转储中的调用堆栈无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com