我如何补救"目前不会击中断点。该文件没有加载任何符号"警告?

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

我尝试了以下方法。

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

我在解决方案中有两个WinForms项目。其中一个加载了调试信息,一个没有。它们都以完全相同的方式在项目文件中提到了我想获得调试信息的程序集。有什么想法吗?


我想在这里补充一下,主要是为了我自己,当我回来审查这个问题时,符号不会被加载,直到汇编被加载,而汇编也不会被加载,直到它被需要。如果断点在一个库中,而这个库只在你的主程序集的一个函数中使用,那么在调用该函数之前,符号不会被加载(并且会显示断点未被击中)。

解决办法

开始调试,一旦你到达一个断点或使用Debug > Break All,就使用Debug > Windows > Modules。 你会看到一个所有加载到进程中的程序集的列表。 找到你想获得调试信息的那个。 右键单击它并选择符号加载信息。 你会得到一个对话框,其中列出了它寻找该程序集的.pdb文件的所有目录。 将该列表与实际的.pdb位置进行核对。 确保它没有找到一个旧的。

在正常项目中,程序集和它的.pdb文件应该总是被IDE复制到与你的.exe相同的文件夹中。 你项目的bin/Debug文件夹。 如果你一直在玩弄它,请确保从GAC中删除一个。

评论(33)

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

对解决方案进行重建,然后再尝试调试。

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

评论(8)

你需要在编译器设置中启用"生成调试信息"。

评论(3)