协慌网

登录 贡献 社区

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

快递版 C#桌面应用程序。工作后 5 秒钟没有工作。

我尝试了以下内容。

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

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


我想在这里添加,主要是为了我自己回来审查这个问题时,在加载程序集之前不加载符号,并且在需要之前不加载程序集。如果断点位于仅在主程序集中的一个函数中使用的库中,则在调用该函数之前,将不会加载符号(并且将显示断点未被命中)。

答案

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

在正常项目中,程序集及其. pdb 文件应始终由 IDE 复制到与. exe 相同的文件夹中。项目的 bin \ Debug 文件夹。如果您一直在玩 GAC,请务必从 GAC 中删除一个。

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

如果这不起作用,请检查:

  1. 用鼠标右键单击您的项目
  2. 选择[属性]
  3. 选择[Build]选项卡
  4. 确保选中[Define DEBUG constant][Define TRACE constant]
  5. 单击 “构建” 选项卡页面底部的[高级]按钮
  6. 确保[Debug Info:]设置为[full]
  7. 单击[确定] 并重建项目;-)

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

只是简单的尝试 - 你可能已经尝试过了。右键单击解决方案资源管理器中的解决方案,单击“清除解决方案”,这将删除与解决方案关联的所有已编译和临时文件

重建解决方案并尝试再次调试。

我在解决方案中也遇到了多个项目的断点问题 - 一些编译为 x86,一些编译为 x64。