【发布时间】:2020-12-06 05:35:49
【问题描述】:
我们在客户网站上遇到了一些问题。所以我们在他们的网站上生成了转储。 现在要找出我们从 Visual Studio 加载转储文件的问题。 我也给出了正确的符号路径。
A matching symbol file was not found in this folder
Error msg (Eventhough pdb is present is same loaction )
即使 pdb 存在,它也会说“在此文件夹中找不到匹配的符号文件”
dll 和 pdb 的时间戳和日期应该相同吗? (在我的情况下 pdb 和 dll 源代码是相同的,但两者的构建日期不同)
在我的 Visual Studio 选项中,我也禁用了源代码必须相同复选框。
我的源代码是 c++。
是时间戳不匹配的问题吗? 那么有什么解决方法吗?
或者我做错了什么?
我尝试同时使用 Visual Studio 2013 和 Visual Studio 2019 进行调试
感谢您的宝贵时间......
【问题讨论】:
-
不是时间戳,但这确实表明有些不匹配。您可以尝试改用 WinDbg。 Per MS: "PDB 文件中的名称和签名必须与要在调试器中加载的符号的可执行文件匹配。WinDBG 调试器可以使用 加载不匹配的符号。 symopt+0x40 命令。Visual Studio 没有类似的选项来加载不匹配的符号。".
-
@dxiv 我使用了 windbg 。我使用了命令 .symopt+0x40。但我收到“*** 警告:无法验证 opldcm.dll 的校验和”,请您帮帮我。谢谢
-
而且 pdb 和 dll 的源代码肯定是一样的
-
这只是一个警告,您可以忽略。只要符号足够接近,WinDbg 就可以很好地使用它们。关于代码相同,这(总是)不够。唯一可以保证的匹配是 .dll 和 .pdb 都是由同一个链接调用在同一个构建中生成的。
-
谢谢。我的 dll 和 pdb 存在签名不匹配。我使用 Chkmatch 工具进行检查,并使用相同的工具更正了 pdb。它有效。非常感谢您的帮助(工具“debuginfo.com/tools/chkmatch.html”的链接)
标签: c++ visual-studio visual-c++ visual-studio-2017 dump