gpt4 book ai didi

c# - 调试 .DMP 时 Visual Studio 2008 不加载符号

转载 作者:行者123 更新时间:2023-11-30 17:18:05 26 4
gpt4 key购买 nike

我正在尝试从 .DMP 文件调试 C# 应用程序,并且我将可执行文件、DLL 和 PDB 都放在一个名为“MyFolder”的文件夹中。我将包含源代码的目录设置为 C:\MyFolder\但是当我尝试调试时它告诉我:

"No symbols are loaded for any call stack frame. The source code cannot be displayed."

当我打开符号加载信息时,它指出找不到以下 PDB:

C:\Windows\System32\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\MyFolder\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\MyFolder\symbols\dll\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\MyFolder\dll\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\MyFolder\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\Windows\symbols\dll\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\Windows\dll\kernel32.pdb: 无法找到或打开 PDB 文件。
C:\Windows\kernel32.pdb: 无法找到或打开 PDB 文件。

我的 PDB 位于正确的文件夹中,并且带有完全相同的时间和日期的时间戳。有人知道这里发生了什么吗?加载符号的正确方法是什么?

我如何验证我的应用程序的符号是否实际加载(以消除它们作为问题)? 我检查了模块,看起来我项目的所有 DLL 和可执行文件都无法加载符号,特别是符号状态是“符号文件中没有 native 符号”...当我右键单击该项目时,我选择“从 -> 符号路径加载符号”,然后我选择 PDB C:\MyFolder\MyApplication.pdb 然后它告诉我“MyApplication.pdb 的符号文件与模块不匹配。”

最佳答案

听起来转储文件是 native 代码小型转储,而不是托管代码小型转储,因为所有这些 DLL 的符号通常对于托管调试并不重要,除非您调试混合模式应用程序,调试到 Win32 调用或跨托管/非托管边界进行调试。

这取决于小型转储的创建方式。如果它在不同操作系统或服务包的不同机器上,那么您可能需要设置符号路径以从其他机器获取系统 DLL 的确切 PDB,而不是您的应用程序组件和符号。如果这些非托管符号正确,您的托管调试体验将会得到改善。为了让事情变得更加复杂,您需要处理 .NET“微版本”和 native 图像以使堆栈跟踪正常工作。

关于c# - 调试 .DMP 时 Visual Studio 2008 不加载符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022953/

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