调试 Visual Studio 扩展时,.pdb 文件不可用

Posted

技术标签:

【中文标题】调试 Visual Studio 扩展时,.pdb 文件不可用【英文标题】:.pdb files not available when debugging Visual Studio Extension 【发布时间】:2021-07-25 08:55:10 【问题描述】:

[环境:W10 x64 Pro v. 20H2,Visual Studio Pro 2019 16.9.4]

我正在尝试调试一个开源项目,它是一个 Visual Studio 扩展 (AnkhSVN2019),并且能够启动一个 VS 扩展调试会话,其中正在执行我修改的代码。

但是,我在代码中设置的任何断点在运行时都会被禁用,当我将鼠标悬停在禁用的断点上时,我会收到消息

The breakpoint will not currently be hit. No symbols have been loaded for this document.

当我在调试会话中并打开 Modules 窗口(调试 -> Windows -> 模块)时,我看到我感兴趣的 dll 已加载并位于 @987654323 @。 (确实存在。)但该目录中没有Ankh.UI.pdb。一些希望相关的观察结果:

文件Ankh.UI.pdb确实存在于项目的...\bin\Debug\目录中 上述 Ankh.UI.dll 的时间戳早于我最近对该 .dll 中的文件所做的编辑 环顾四周,我发现 C:\Users\conrad\AppData\Local\Microsoft\VisualStudio\16.0_b1ddb83bExp\Extensions\Phil Jollans\AnkhSVN2019\1.0.12\ 中有一个更新的 Ankh.UI.dll,但该目录中也没有 .pdb 文件(Phil Jollans 是 github 上 AnkhSVN2019 的所有者)

返回 Modules 窗口,如果我右键单击 Ankh.UI.dll 行并选择 Symbol Load Information...,将打开一个对话框,其中包含以下信息:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Ankh.UI.pdb: Cannot find or open the PDB file.
c:\users\conrad\appdata\local\microsoft\visualstudio\16.0_b1ddb83bexp\extensions\extensions-16.0_b1ddb83b\wyo52n3q.czx\Ankh.UI.pdb: Cannot find or open the PDB file.
C:\AnkhSVN2019\src\Ankh.UI\obj\x86\Release\Ankh.UI.pdb: Cannot find or open the PDB file.
C:\Windows\Ankh.UI.pdb: Cannot find or open the PDB file.
C:\Windows\symbols\dll\Ankh.UI.pdb: Cannot find or open the PDB file.
C:\Windows\dll\Ankh.UI.pdb: Cannot find or open the PDB file.

(顺便说一句,没有C:\AnkhSVN2019\ 目录。)

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

我已经下载了这个项目,但是如何调试这个项目呢?

我使用以下步骤调试它,可以打断点(Ankh.UI),并且可以加载Ankh.UI pdb文件。

    右键单击 Ankh.Package 项目 打开Debug页面 使用“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe”将Start Action 更改为Start external program 在命令行参数中添加/rootsuffix Exp

【讨论】:

【参考方案2】:

从扩展所有者那里获得了足够(尽管可能不是完全必要)步骤的列表,以使我的环境处于可调试扩展的状态:

启动实验实例(在调试器中) 从实验实例中移除 AnkhSVN(通过扩展/管理扩展) 关闭实验实例 从普通实例中移除 AnkhSVN 关闭视觉工作室 在开始菜单中,点击Reset Visual Studio 2019 Experimental Instance链接 再次在 Visual Studio 中打开 AnkhSVN 清洁溶液 启动调试器(它将重新构建解决方案 - 不要先构建解决方案!) 如果实验实例没有安装AnkhSVN,则关闭它并重新启动调试器

这个步骤列表是 IMO 完全疯狂的,不应该是调试扩展所必需的。无法判断这是 VS 的缺点还是由于扩展架构不佳。但至少现在我可以调试它了。

【讨论】:

以上是关于调试 Visual Studio 扩展时,.pdb 文件不可用的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 怎么使用pdb进行调试

Microsoft Visual Studio PDB文件相关事宜

在 Visual Studio 10 中带有库的 PDB 文件

OpenCV 3 Visual Studio 2017 调试,调用堆栈没有 .pdb 文件

Visual Studio 2019 VS的.pdb文件是什么?(用于调试)

Visual Studio 2019 VS的.pdb文件是什么?(用于调试)