【问题标题】:Breakpoints not hit, no symbols loaded未命中断点,未加载符号
【发布时间】:2014-07-15 15:16:22
【问题描述】:

我有一个带有一些断点的 VS 解决方案。当我将解决方案附加到第三方程序时,断点被省略(“断点当前不会被命中。没有为此文档加载任何符号”)。任何不在我的解决方案中的(引用的)项目的断点都会被击中,只有我自己的解决方案中的断点才会被击中。因此,在与第三方工具交互时,我无法通过我的项目进行调试。我也尝试了this,但问题仍然存在。我还重新构建了整个解决方案以重新创建项目的调试信息文件。该位置与其他解决方案的位置相同,但显然未加载其包含的信息。任何想法为什么?

【问题讨论】:

  • 您是否尝试过将第三方程序 bin 文件夹中的 DLL 和 PDB 文件替换为 DEBUG 模式下本地构建的输出?此外,当您的程序集被点击时,符号首先被加载,因此,请确保第三方在加载符号之前至少调用您的程序集一次。
  • 你试过重启Visual Studio吗?我也会尝试“删除所有断点”。
  • 有时我遇到一个项目,无论出于何种原因,在构建时都没有完全清除 bin 文件夹。尝试手动删除 bin 文件夹的内容。
  • @Gerardo 为什么要将 DLL 和 PDB 复制到 3rd 方工具?也没有解决方案,所以我想知道这是否是问题(但也许该工具本身在后台引用了我的 DLL 目录,我想是这样)。第三方工具实际上命中了程序集,我得到了我在项目中创建的消息框(在可能断点之前)。
  • @anthon 和 Richard:我还清理了解决方案 bin 文件夹及其所有断点 :(

标签: c# visual-studio-2010 breakpoints


【解决方案1】:

我终于在this 帖子中找到了答案。我查看了加载的模块(调试-> Windows-> 模块,同时将程序集附加到进程)并注意到我的实际程序集不在列表中。我想调试的代码是用 .NET 3.5 构建的,但模块只为 .NET 4.0 加载。就我而言,通常这可能会被自动检测到,但是这次自动检测由于某种奇怪的原因而不起作用,所以我将选定的代码类型从托管(v4.0)更改为托管(v2.0),现在它可以工作了。希望以后我必须再次在 .NET 4.0 上进行调试时不会发生这种情况......

【讨论】:

    【解决方案2】:

    如果之后出现问题,您也可以尝试这些答案。

    参考:First answer 或查看:Second answer

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2011-12-01
      • 2010-10-13
      • 2019-03-29
      相关资源
      最近更新 更多