Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在VS.NET2005中调试时未连接断点_C#_Debugging_Visual Studio 2005_Breakpoints - Fatal编程技术网

C# 在VS.NET2005中调试时未连接断点

C# 在VS.NET2005中调试时未连接断点,c#,debugging,visual-studio-2005,breakpoints,C#,Debugging,Visual Studio 2005,Breakpoints,最近遇到了这个问题。。。在VS.Net 2005中调试应用程序时,断点未连接。错误表示编译的代码与运行的版本不同,因此存在不匹配,导致断点断开连接 清理所有bin文件并重新编译的解决方案没有帮助。不仅仅是发生在一个盒子或一个人身上 补充说明: 此解决方案在TFS中用于源代码管理。如果我删除本地TFS存储库并从头开始从源代码管理获取它,有时问题就会消失。我还尝试了卸载和重新安装VisualStudio。这有时也有帮助。这两种方法在某些时候都能起作用,这表明问题不是由这两种方法直接引起的。在选项->

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

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

补充说明:
此解决方案在TFS中用于源代码管理。如果我删除本地TFS存储库并从头开始从源代码管理获取它,有时问题就会消失。我还尝试了卸载和重新安装VisualStudio。这有时也有帮助。这两种方法在某些时候都能起作用,这表明问题不是由这两种方法直接引起的。

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

构建配置是否设置为发布


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

AviewAnew-已应MS技术人员的请求完成了该操作。取消选中“要求源文件与版本匹配”并没有帮助


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

是否确实.pdb文件与正在运行的可执行文件位于同一文件夹中?确保两个文件的上次修改日期匹配,并且VS已附加到该exe(而不是其他文件)。

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

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


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

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

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


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

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

通过关闭Visual Studio并删除“C:\WINDOWS\Microsoft.NET\Framework{Framework version}\temporary ASP.NET files”下为项目生成的临时ASP.NET程序集文件,重新打开项目,解决了此问题


请阅读和注释以解决此问题。

确保代码上没有阻止在应用程序的任何位置对代码进行调试的调试属性,例如DebuggerHidden或DebuggerStepThrough?

您是否可以一步一步地对代码进行调试,直到断点所在的那一行,而不是运行并等待它命中?你能一步一步地完成代码吗?

也许这个建议会有帮助:

  • 在Visual Studio中调试时,单击调试>窗口>模块。IDE将停靠一个模块窗口,显示为您的项目加载的所有模块
  • 查找项目的DLL,并检查其符号状态
  • 如果上面写着“符号已加载”,那么你就是金色的。如果显示无法找到或打开PDB文件,请右键单击模块,选择“加载符号”,然后浏览到PDB的路径 我发现有时有必要:

  • 停止调试器
  • 关闭IDE
  • 关闭托管应用程序
  • 核弹obj和bin文件夹
  • 重新启动IDE
  • 重建项目
  • 再次浏览模块窗口
  • 浏览到PDB文件的位置后,符号状态应更改为已加载的符号,现在应能够在代码行中设置并捕获断点

  • 来源:

    是在MS的要求下这样做的,没有任何帮助。它设置为调试,没有外部DLL-它们都是本地项目。它是.Net,我没有创建一个被外部exe占用的DLL项目。这些断点应该被命中-禁用编译器优化没有任何影响。这不是ASP.Net项目尽管它有webservices(它是一个智能客户端应用程序)。然而,断点不仅在webservice端被破坏,而且在exe和相关dll中也被破坏。不,这里没有类似的情况,尽管您提出了一些非常好的建议。8) 没有断点在工作,代码好像是在发布模式下编译的。有趣且有用,但不是我所看到的问题的原因-IE8还没有安装(当时甚至不认为它可用)。还是很好的参考,谢谢!