如何在Visual Studio 2012中加载符号

22

当我在调试我的应用程序时,我看到以下消息:

无法找到或打开PDB文件。

我记得在调试应用程序时能够指定PDB文件的位置。我该怎么做?我正在使用Visual Studio 2012。


9
好的,我知道如何做:调试-窗口-模块,然后右键单击DLL以加载PDB。问题是它告诉我:“在此文件夹中未找到匹配的符号”,尽管PDB和DLL名称相同。 - john d
1
我将pdb文件添加到与dll文件相同的目录中,然后它们成功加载了。 - john d
2
你应该回答你的问题,而不是对它进行评论。非常感谢。 - Ghasan غسان
1个回答

18

添加符号文件的位置

打开设置:工具->选项->调试->符号,然后添加包含 .PDB 文件的目录。

Visual Studio 界面中此菜单所在位置的截图

您可以添加自定义路径,例如为每个项目设置不同路径,也可以编辑公共路径,此处 Visual Studio 将保存所有 .pdb 缓存文件。

创建后构建脚本

我在每个项目中创建了一个后编译事件,将所有 .pdb 文件复制到一个文件夹中,这样我就可以在一个地方找到它们。但是,您也可以将其分别存储,但我发现这并不方便,因为每次需要编辑位置列表。

将 .pdb 和 .dll 复制到符号缓存位置的后调试脚本示例:

xcopy /Y /R "$(TargetDir)$(ProjectName).pdb" "D:\VS_CACHE\"
xcopy /Y /R "$(TargetDir)$(ProjectName).dll" "D:\VS_CACHE\"

解决符号未找到的问题

当您处于调试模式并且由于某些原因未找到符号时,可能是由于多种原因:

  1. 您的符号缓存中有 .pdb 文件,但已过期 (如果在代码中放置断点并悬停在其上,则可以确定是否为此情况)
  2. 您有多个使用此部分代码的 .dll 文件 (如果在代码中放置断点并悬停在其上,则可以获取此结果)
  3. 符号未加载,在这种情况下,您可以通过转到:调试-> 窗口 -> 模块 并尝试加载所需的模块来检查它。

Visual Studio接口中“模块”->“加载符号”的截屏

让调试更容易:

为了重新附加VS调试器到正在运行的应用程序,我建议使用这个免费的Visual Studio插件(支持VS 2015):

ReAttach: visualstudiogallery.msdn.microsoft.com/8cccc206-b9de-42ef-8f5a-160ad0f017ae

这将为您节省大量时间!:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接