我该如何解决 “当前不会命中断点。没有为该文档加载任何符号。” 警告?

Express 版上的 C#桌面应用程序。工作,然后在 5 秒钟后不工作。

我尝试了以下方法。

  • 确保在所有程序集上都设置了调试配置,调试标志和完整的调试信息。
  • 从我的整个计算机上删除所有与项目相关的 bin 和 obj 文件夹以及所有 DLL。
  • 重新创建引起问题的项目。
  • 重启。

我在解决方案中有两个 WinForms 项目。其中一个加载调试信息,一个不加载。它们都引用我正试图以相同方式在项目文件中获取调试信息的程序集。有任何想法吗?


我想在这里添加内容,主要是为我自己添加,当我再次回顾此问题时,直到加载程序集后才加载符号,并且直到需要时才加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,不会加载符号(并且将断点显示为未命中)。

答案

到达断点或使用Debug > Break All ,立即开始调试,使用Debug > Windows > Modules 。您将看到加载到流程中的所有程序集的列表。找到您要获取调试信息的那个。右键单击它,然后选择 “符号加载信息”。您将看到一个对话框,列出所有在其中查找程序集的. pdb 文件的目录。对照实际的. pdb 位置验证该列表。确保没有找到旧的。

在普通项目中,程序集及其. pdb 文件应始终由 IDE 复制到与. exe 相同的文件夹中。项目的 bin \ Debug 文件夹。如果您一直在使用它,请确保从 GAC 中删除一个。

首先尝试通过右键单击项目 > 重建来重建项目,如果这不起作用,请尝试清理项目(右键单击项目 > 清理)

如果这样不起作用,请检查以下内容:

  1. 右键单击您的项目
  2. 选择[属性]
  3. 选择[构建]选项卡
  4. 确保选中[定义调试常量][定义跟踪常量]
  5. 确保未选中[优化代码]
  6. 单击 “构建” 选项卡页面底部的[高级]按钮
  7. 确保将[调试信息:]设置为[完整]
  8. 单击[确定] 并重建项目;-)

(步骤 6 生成. pdb 文件,这些是调试符号)

只需尝试一下即可 - 您可能已经尝试过了。在解决方案资源管理器中右键单击解决方案,单击“干净的解决方案”,这将删除与解决方案关联的所有已编译和临时文件

重新生成解决方案,然后尝试再次调试。

我在解决方案中的多个项目的断点方面也遇到了麻烦 - 有些编译为 x86,有些编译为 x64。

在调试 / 常规设置中禁用 “仅我的代码” 选项。

Hans K交叉发布了我在类似线程上找到的此修复程序>> 这里 <<

右键单击解决方案 -> 属性

在 Common Properties-> Startup Project 下查看

选择多个启动项目

在需要调试的项目上选择 “开始操作”。

选择的答案使我得以解决问题。但是我需要做更多的事情:

即使在下拉菜单中选择了 “调试”:

在此处输入图片说明

并在项目的 Properties> Build 中:

在此处输入图片说明

Visual Studio 并未将符号加载到特定项目。因此,在该下拉菜单中,我选择 “配置管理器”,并看到我的 Web 项目的设置不正确:

在此处输入图片说明

在此处输入图片说明

然后,将其设置为 “Debug”,它开始生成.pdb文件。 但是我需要手动复制 PDB 和 DLL 并放入 VS 查找的文件夹中(这是所选答案对我有帮助的地方):

在此处输入图片说明

我可以通过简单地将 “附加到进程” 中的选项设置为 “自动确定要调试的代码类型” 选项来解决该错误,如随附的屏幕截图所示。

只需按照以下步骤操作:

  • 从菜单栏转到 “ 调试
  • 单击附加到进程
  • 在 “ 附加到”选项附近,单击 “ 选择”按钮
  • 将出现 “ 选择代码类型”窗口
  • 现在,选择选项自动确定要调试的代码类型,然后单击确定按钮。

修复调试错误

Debug > Windows > Modules以查看正在加载的模块,这使我朝着正确的方向前进。

在我的情况下,IIS Express 似乎正在从临时 ASP.NET 文件加载不同的 DLL。

解决方案?

  1. 浏览到C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
  2. 删除此目录中的所有内容!

有时,即使它给您带来此错误, breakpoint仍然会命中,因此只需忽略该错误即可。这在MVC web appViews中经常发生。

检查 bin / Debug 文件夹中是否缺少. pbd 文件。如果是,请转到项目的 “属性”,选择 “构建”,然后在底部选择 “高级”。在出现的新窗口中的 “调试信息” 下选择 “完整”。这是我的问题,已为我解决。

显示在哪里可以找到设置