gpt4 book ai didi

c++ - VS 2013 缺少符号 (msvcr120.i386.pdb)

转载 作者:行者123 更新时间:2023-11-30 03:48:22 26 4
gpt4 key购买 nike

我有一个非常令人沮丧的问题,我正在调试我的代码,为了获得完整的调用堆栈,我需要获取 msvcr120.dll (msvcr120.i386.pdb) 的符号。

问题是,我无法理解。

  • 尝试从 MS 符号服务器加载它,结果:

SYMSRV: http://msdl.microsoft.com/download/symbols/msvcr120.i386.pdb/16F5E2EF340A453ABC8B8F67DC6FD8082/msvcr120.i386.pdb not found

http://msdl.microsoft.com/download/symbols: Symbols not found on symbol server.

  • 尝试从 MS 下载适用于各种 Windows 版本的手动符号包,下载了 aprox。 2GB,从 90 到 110 的 msvcr 符号和两个 120(来自 Win 10 包):

msvcr120.i386.coresys.pdb

msvcr120_clr0400.i386.pdb

那么,有没有办法得到“msvcr120.i386.pdb”?

最佳答案

为了获得文件的正确 PDB,您需要知道实际加载了哪个模块。如果您在运行时创建程序的崩溃转储 (.DMP)(您可以使用任务管理器执行此操作),它应该会向您显示加载的确切文件,包括它的完整路径。您还可以使用 dependency walker 之类的工具,它可以更好地找到完整路径。

一旦你有了路径,你就可以通过右键单击、加载并指向有问题的确切文件来专门尝试为该模块强制加载符号。这应该获得正确的哈希值并将正确的 PDB 从 MS 符号存储加载到本地缓存中。

可能发生的情况是您正在运行的程序有一个调用特定 SxS 版本 DLL 的 list ,或者您的程序已经崩溃到足以让 Windows 将其置于“兼容模式” ”。无论哪种方式,这都意味着程序和 VS 正在寻找不同版本的 DLL,因此你遇到了问题。当您的程序在与您正在调试的机器不同的机器上崩溃时,您也可以看到这一点,特别是如果它们不在同一位置以进行 Windows 更新。

如果您经常进行开发工作,则应该禁用 Windows 自动将其置于兼容模式。它将为您省去很多麻烦。

关于c++ - VS 2013 缺少符号 (msvcr120.i386.pdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33253343/

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