Pat*_*ild 44 msbuild debugging debug-symbols visual-studio visual-studio-2012
在我正在研究的团队项目中,IdeasController.cs如果解决方案中存在另一个具有相同名称的文件,则在文件中设置断点(比如说)会导致调试器行为不稳定.我在几个开发人员的工作站上重现了这个问题.
我IdeasController.cs在Web API中设置了一个断点:
另一个文件IdeasController.cs存在于我们单独的MVC 4 Web项目中.在下面的屏幕截图中,调试器显示Api->IdeasController源代码,但行突出显示与代码结构匹配Web->IdeasController.断点是重复的,其中一个位于注释块的中间.
Breakpoint窗口同时显示两个文件中的断点:
在某些工作站上,调试器会逐步执行正确的行(无论行突出显示); 在其他人身上,它愉快地介绍了不相关的行(包括评论和空白).我猜这取决于它选择显示哪个源文件.
我拖网上网了.当调试文件(*.pdb),源文件和编译代码之间不匹配时,似乎会出现这种问题.有很多可能的原因:重复的文件名(可能会混淆调试器[5]),过时的项目构建文件,无效的解决方案缓存或不正确的构建配置.
这些是我发现并尝试过的解决方案:
Debug> Windows> Modules.这两个组件被列出,不最优化,并且具有的"加载符号"符号状态).这些都没有任何影响.我可以重命名其中一个文件(不重命名类)来暂时解决问题,但这远非理想.
我最新的Google搜索的第14页.建议将不胜感激.:)
小智 6
我很高兴我找到这篇文章,以为我是唯一一个疯了!我在VS2012中使用VB.Net遇到了同样的问题,并尝试了OP提到的所有内容.
文件的唯一命名似乎是我发现的唯一100%修复.在应用程序加载之前禁用所有断点,然后重新启用所需的断点,大部分时间都可以使用.Lambda函数中的断点仍然可以为您提供问题.
如果没有更好的选择,可以将断点放在代码中:
System.Diagnostics.Debugger.Break();
Run Code Online (Sandbox Code Playgroud)
只是不要忘了之后将其删除...
小智 3
我今天也遇到了同样的问题。我可以追溯到我在调试时忘记将平台目标设置为 x86 的事实。不幸的是,其他(x64 /任何CPU)在调试时可能会出现问题。至少VS 2008不喜欢它们。我想这是远离的另一个原因。
一些猜测...我认为调试器(在运行 64 位应用程序时)在某些情况下会以某种方式从文件中“窃取”断点。对我来说,这是因为首先加载了另一个具有相同文件名的程序集。即使在 64 位模式下,如果我首先使用断点手动加载程序集,我也能够避免该问题:Assembly.Load("MyAssemblyWithBreakpoints");
希望这(我的第一个 stackoverflow 贡献)有所帮助。
| 归档时间: |
|
| 查看次数: |
12556 次 |
| 最近记录: |