.pdb 文件在调试 Visual Studio 扩展时不可用
.pdb files not available when debugging Visual Studio Extension
[环境: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 window(调试 -> Windows -> 模块),我看到我感兴趣的 dll 已加载并位于 c:\users\conrad\appdata\local\microsoft\visualstudio.0_b1ddb83bexp\extensions\extensions-16.0_b1ddb83b\wyo52n3q.czx\Ankh.UI.dll
。 (它确实在那里。)虽然那个目录中没有 Ankh.UI.pdb
。一些希望相关的观察结果:
- 文件
Ankh.UI.pdb
确实存在于项目的 ...\bin\Debug\
目录中
- 上述 Ankh.UI.dll 的时间戳早于我最近对该 .dll 文件所做的编辑
- 环顾四周,我看到
C:\Users\conrad\AppData\Local\Microsoft\VisualStudio.0_b1ddb83bExp\Extensions\Phil Jollans\AnkhSVN2019.0.12\
中有更新的 Ankh.UI.dll,但该目录中也没有 .pdb 文件(Phil Jollans 是 github 上 AnkhSVN2019 的所有者)
回到 Modules window,如果我右键单击 Ankh.UI.dll 行并选择 Symbol Load Information...,将打开一个包含以下信息的对话框:
C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Ankh.UI.pdb: Cannot find or open the PDB file.
c:\users\conrad\appdata\local\microsoft\visualstudio.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\
目录。)
我在这里错过了什么?
我已经下载了这个项目,但是你如何调试这个项目?
我使用下面的步骤调试它,断点(Ankh.UI)可以被击中,并且Ankh.UI pdb文件可以被加载。
- 右键单击 Ankh.Package 项目
- 打开
Debug
页
- 使用“C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\devenv.exe”将
Start Action
更改为 Start external program
“
- 在命令行参数中添加
/rootsuffix Exp
从扩展所有者那里获得了足够的(虽然可能不是完全必要的)步骤列表,以使我的环境处于扩展可调试的状态:
- 启动实验实例(在调试器中)
- 从实验实例中删除 AnkhSVN(通过 Extensions/Manage 扩展)
- 关闭实验实例
- 从普通实例中删除 AnkhSVN
- 关闭visual studio
- 在开始菜单中,点击重置Visual Studio2019实验实例link
- 再次在 visual studio 中打开 AnkhSVN
- 清洁溶液
- 启动调试器(它将重建解决方案 – 不要先构建解决方案!)
- 如果它没有将AnkhSVN安装到实验实例中,则关闭它并重新启动调试器
这个步骤列表在我看来完全是疯狂的,应该不是调试扩展所必需的。无法判断这是 VS 的缺点还是由于扩展的架构不佳。但至少现在我可以调试它了。
[环境: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 window(调试 -> Windows -> 模块),我看到我感兴趣的 dll 已加载并位于 c:\users\conrad\appdata\local\microsoft\visualstudio.0_b1ddb83bexp\extensions\extensions-16.0_b1ddb83b\wyo52n3q.czx\Ankh.UI.dll
。 (它确实在那里。)虽然那个目录中没有 Ankh.UI.pdb
。一些希望相关的观察结果:
- 文件
Ankh.UI.pdb
确实存在于项目的...\bin\Debug\
目录中 - 上述 Ankh.UI.dll 的时间戳早于我最近对该 .dll 文件所做的编辑
- 环顾四周,我看到
C:\Users\conrad\AppData\Local\Microsoft\VisualStudio.0_b1ddb83bExp\Extensions\Phil Jollans\AnkhSVN2019.0.12\
中有更新的 Ankh.UI.dll,但该目录中也没有 .pdb 文件(Phil Jollans 是 github 上 AnkhSVN2019 的所有者)
回到 Modules window,如果我右键单击 Ankh.UI.dll 行并选择 Symbol Load Information...,将打开一个包含以下信息的对话框:
C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Ankh.UI.pdb: Cannot find or open the PDB file.
c:\users\conrad\appdata\local\microsoft\visualstudio.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\
目录。)
我在这里错过了什么?
我已经下载了这个项目,但是你如何调试这个项目?
我使用下面的步骤调试它,断点(Ankh.UI)可以被击中,并且Ankh.UI pdb文件可以被加载。
- 右键单击 Ankh.Package 项目
- 打开
Debug
页 - 使用“C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\devenv.exe”将
Start Action
更改为Start external program
“ - 在命令行参数中添加
/rootsuffix Exp
从扩展所有者那里获得了足够的(虽然可能不是完全必要的)步骤列表,以使我的环境处于扩展可调试的状态:
- 启动实验实例(在调试器中)
- 从实验实例中删除 AnkhSVN(通过 Extensions/Manage 扩展)
- 关闭实验实例
- 从普通实例中删除 AnkhSVN
- 关闭visual studio
- 在开始菜单中,点击重置Visual Studio2019实验实例link
- 再次在 visual studio 中打开 AnkhSVN
- 清洁溶液
- 启动调试器(它将重建解决方案 – 不要先构建解决方案!)
- 如果它没有将AnkhSVN安装到实验实例中,则关闭它并重新启动调试器
这个步骤列表在我看来完全是疯狂的,应该不是调试扩展所必需的。无法判断这是 VS 的缺点还是由于扩展的架构不佳。但至少现在我可以调试它了。