代码之家  ›  专栏  ›  技术社区  ›  ScottCher

在vs.net 2005中调试时未连接断点

  •  4
  • ScottCher  · 技术社区  · 16 年前

    最近遇到这个问题…在vs.net 2005中调试应用程序时,不连接断点。错误表明编译的代码与正在运行的版本不同,因此存在不匹配,导致断点断开连接。

    清除所有bin文件的解决方案和重新编译没有帮助。不仅仅发生在一个盒子或一个人身上。

    补充说明: 此解决方案位于用于源代码管理的TFS中。如果我删除本地的TFS存储库并从源代码管理中从头获取它,有时问题会消失。我还尝试卸载并重新安装Visual Studio。这有时也有帮助。事实上,这两种方法有时都有效,这表明问题不是由两种方法直接造成的。

    12 回复  |  直到 15 年前
        1
  •  8
  •   Esteban Brenes    16 年前

    也许这个建议会有帮助:

    1. 在Visual Studio中进行调试时,请单击“调试”模块。IDE将停靠一个模块窗口,显示为您的项目加载的所有模块。
    2. 查找项目的dll,并检查其符号状态。
    3. 如果上面写着符号,那么你就是黄金。如果上面说找不到或无法打开PDB文件,请右键单击模块,选择“加载符号”,然后浏览到PDB的路径。

    我发现有时有必要:

    1. 停止调试器
    2. 关闭IDE
    3. 关闭宿主应用程序
    4. 核弹obj和bin文件夹
    5. 重新启动IDE
    6. 重建项目
    7. 再次浏览模块窗口
    8. 一旦浏览到PDB文件的位置,符号状态应该更改为已加载的符号,现在您应该能够在代码行中设置并捕获断点。

    来源: The breakpoint will not currently be hit. No symbols have been loaded for this document.

        3
  •  1
  •   Tom Ritter    16 年前

    在“选项”->调试中,您可以取消选中“要求源文件与原始版本完全匹配”,这可能会有所帮助。

        4
  •  1
  •   Mike L    16 年前

    生成配置是否设置为释放?

    是否有对设置断点的外部dll的引用?

        5
  •  1
  •   Jordan Parmer    16 年前

    是否正在创建外部可执行文件使用的dll项目?你用的是.NET还是COM?

    如果使用的是与.NET互操作的COM,则当可执行文件加载DLL时,DLL版本有时会出现问题。例如,如果您的每日生成生成生成一个递增的内部版本号,但调试dll的内部版本号较小,则可执行文件将不会加载调试dll。要解决此问题,您需要扫描注册表中的hkey_classes_root\clsid目录以查找.net/com组件的guid/clsid。在inproc32下,删除版本号高于调试dll的条目。

    同样,以上仅适用于.NET+COM互操作DLL。

        6
  •  1
  •   Ash    16 年前

    我过去也遇到过类似的问题。

    解决方法是关闭Visual Studio并删除“c:\windows\microsoft.net\framework framework version \temporary asp.net files”下项目生成的临时ASP.NET程序集文件,然后重新打开该项目。

    阅读 post here 以及解决问题的意见。

        7
  •  0
  •   ScottCher    16 年前

    Aviewanew——在微软技术人员的要求下已经这样做了。取消选中“需要源文件来匹配版本”没有帮助。

    Mike L-配置设置为调试,现在有外部dll。使用除框架引用之外的所有本地项目。

        8
  •  0
  •   Santiago Palladino    16 年前

    您确定.pdb文件与正在运行的可执行文件在同一文件夹中吗?确保两个文件的最后修改日期匹配,并且vs附加到该exe(而不是其他exe)。

        9
  •  0
  •   Jurney    16 年前

    您是否有一个构建后步骤以任何方式接触到二进制文件?如果是这样,可能会混淆调试器,使其看起来您的符号与您的exe/dll不匹配,因为大小/时间戳不正确。

        10
  •  0
  •   Liam Westley    16 年前

    在过去,我有时发现关闭编译器优化可以解决“缺少”的断点,因为优化程序确定(正确地)没有调用代码,并将它们从编译版本中删除。

    这听起来确实是另一个问题,但可能值得确保在调试模式下关闭优化。[项目/属性,生成设置选项卡]

        11
  •  0
  •   Santiago Palladino    16 年前

    在应用程序的任何点上,代码上是否没有阻止调试代码的调试属性,例如debuggerhidden或debuggersteptthrough?

        12
  •  0
  •   Jurney    16 年前

    您可以单步执行代码到断点行,而不是运行并等待它命中吗?你能单步执行代码吗?