Visual Studio没有为此文档加载符号

时间:2011-12-01 12:50:58

标签: c++ visual-studio visual-studio-2008

我在调试visual studio 2008 C ++项目时遇到了一些麻烦。当我在调试中开始运行它时,使用消息

禁用断点
  

断点不会被击中。没有为此加载符号   文档。

我尝试过清洁和重建,但这并没有什么不同。

我也试过调试Debug-> Windows->模块。如果我右键单击我正在尝试调试的模块并按下符号加载信息,它会显示一个尝试加载符号的地方列表。列表中的第一个是正确的,文件存在,但旁边是这个错误

  

C:\ path \ to \ my \ symbol \ Debug \ MyProject.pdb:未知的符号处理程序   错误

是否有人知道导致此问题的原因或解决方法?

17 个答案:

答案 0 :(得分:27)

首先,有些模块可能无法在模块窗口中显示,因为其中一些模块可能会动态加载(仅在需要时)。

您可能想要在Linker>下签入您的项目属性。调试>生成程序数据库文件并生成调试信息。确保这两个设置正确。

另外,检查C / C ++>一般>调试信息格式设置为程序数据库以进行编辑和继续(/ ZI)或类似的操作。

我知道您提到您的符号文件存在,但我刚才提到的检查将确保您在正确的位置拥有正确的符号版本。

最后,检查解决方案中的所有项目和文件是否都设置为Debug而不是Release或其他内容,因为此项目/文件不会生成任何符号(因此不会加载任何符号)。

希望这有点帮助。

答案 1 :(得分:4)

就我而言,通过在工具/选项/调试/常规中选中“使用托管兼容模式”来解决问题。

答案 2 :(得分:3)

我设法通过侧面复制我的源并检查完全干净的副本来解决这个问题。我假设它是存储在项目.suo文件中的一些设置。

答案 3 :(得分:3)

mspdbsrv.exe进程可能存在问题。尝试杀死它并再次启动调试器。

答案 4 :(得分:3)

对我来说,修复是在重新启动Visual Studio :)就这么简单。没有其他帮助 - 尝试清理(甚至删除了Debug文件夹中的所有文件),检查了设置,甚至杀死了mspdbsrv.exe进程,但只有VS重启才有效。

答案 5 :(得分:3)

如果在使用'附加到流程'时有任何人遇到此问题,此问题的答案就解决了我:

Visual Studio is not loading modules when attaching to process

具体来说,切换到“原生代码”'在'附加到'选项而不是' Auto'。

答案 6 :(得分:2)

转到"属性"对于将使用该DLL进行调试的网站,然后选择" Native Code"在"调试器"部分如下:

enter image description here

答案 7 :(得分:2)

删除bin和obj文件夹中的所有文件。然后再次构建解决方案。如果您的问题与我的一样,似乎VS正在加载特定未知文件的旧版本,重建解决方案/项目不会替换。在尝试之前,请务必复制您的解决方案/项目。祝你好运!

答案 8 :(得分:1)

复制你的" Debug"项目文件夹中的文件夹,然后删除原始文件中的每个文件" Debug"夹。如果你的视觉工作室已经加载项目已经运行,那么在删除Debug的包含之后关闭它并在重新构建整个项目之前重新打开它,理论上这个动作将创建符号文件的新副本,其余的需要调试你的代码。 当我将文件移动到其他计算机并尝试从那里编译和调试我的代码时,我发现这个问题发生在我身上,尽管所有文件夹和驱动器名称都是相同的,一些IDE如何无法使用以前创建的符号文件。 希望这项工作可以为其他人工作!

答案 9 :(得分:1)

VS2015 C ++

在尝试在VS2015中调试我的应用程序时,在取消加载符号后遇到了同样的问题。在此之后,VS2015拒绝加载我感兴趣的项目的符号(C#调用C ++ DLL的解决方案中的多个子项目)。上述解决方案对我不起作用,但确实如此。

对于Visual Studio 2015(C ++):

  1. 右键单击您的断点所在的项目并选择
    属性展开C / C ++
  2. 在C / C ++下选择常规
  3. 将调试信息格式更改为任何其他选项
  4. 点击“应用”
  5. 将调试信息格式更改回其默认的"程序 用于编辑和继续的数据库(/ ZI)(或您喜欢的任何内容)
  6. 点击“应用”
  7. 现在重建您的项目
  8. 希望这会有所帮助。 艾伦·M

答案 10 :(得分:1)

Modules窗口中,您可以右键单击并将Debug输出文件夹添加到系统查找符号文件的文件夹中。此外,对我有用的是删除所有输出文件手动Clean每次都不会这样做,这就是为什么即使{{1}生成文件,它与输出文件不对应,因此不会从中加载符号。

答案 11 :(得分:0)

在我的情况下,“linker-> general”中的“使用库依赖项输入”应该设置为yes,然后问题就解决了。

答案 12 :(得分:0)

以上都没有帮助我......

最后我从Debug \ X64更改为Debug \ win32,这有帮助,可能它的一些配置在两者中都不相同。也许这会有所帮助 某人的解决方法...

希望可以帮助任何人。

答案 13 :(得分:0)

我正在调试WIA驱动程序,并且遇到了类似的问题。 我注意到了此日志:

  

名为C:\ Windows \ System32 \ WIA \ wiadriverex.dll的DLL无法加载(LoadLibraryEx返回0x0000007E)。确保驱动程序安装正确

然后我意识到这是由于DLL依赖性所致。然后我将所需的DLL复制到System32,问题消失了。请注意,复制到System32,否则对我不起作用。

答案 14 :(得分:0)

它对我的情况有帮助

  1. 调试->附加到进程

  2. 向下滚动到w3wp.exe enter image description here

  3. 选中“显示所有用户的进程 enter image description here

  4. 刷新后,再次滚动到w3wp.exe enter image description here

  5. 选择类型为x64的新项,托管(本机编译)

答案 15 :(得分:-1)

1)右键单击要调试的项目。

2)选择 [属性]

3)选择 [Build] 标签

4)确保选中 [定义DEBUG常数] [定义TRACE常数]

5)点击Build标签页底部的 [高级] 按钮    确保 [调试信息:] 设置为 [完整]

6)点击 [确定]

7)重建项目

答案 16 :(得分:-1)

在我的情况下,它是调试器类型。

我使用了远程Windows调试器,将其更改为本地可以解决问题。

调试器选项:

enter image description here