小编Pat*_*ild的帖子

如果多个文件具有相同的名称,Visual Studio断点会在错误的源文件(或多个文件同时)中断

在我正在研究的团队项目中,IdeasController.cs如果解决方案中存在另一个具有相同名称的文件,则在文件中设置断点(比如说)会导致调试器行为不稳定.我在几个开发人员的工作站上重现了这个问题.

IdeasController.cs在Web API中设置了一个断点:

断点在代码中设置

另一个文件IdeasController.cs存在于我们单独的MVC 4 Web项目中.在下面的屏幕截图中,调试器显示Api->IdeasController源代码,但行突出显示与代码结构匹配Web->IdeasController.断点是重复的,其中一个位于注释块的中间.

调试器突出显示与代码结构不匹配

Breakpoint窗口同时显示两个文件中的断点:

断点跨越两个文件

在某些工作站上,调试器会逐步执行正确的行(无论行突出显示); 在其他人身上,它愉快地介绍了不相关的行(包括评论和空白).我猜这取决于它选择显示哪个源文件.

我试过的

我拖网上网了.当调试文件(*.pdb),源文件和编译代码之间不匹配时,似乎会出现这种问题.有很多可能的原因:重复的文件名(可能会混淆调试器[5]),过时的项目构建文件,无效的解决方案缓存或不正确的构建配置.

这些是我发现并尝试过的解决方案:

  • 检查了我的构建配置.
    1. 确保项目不是在发布模式下构建的.
    2. 确保我们没有启用代码优化.
    3. 确保项目的调试模块已正确加载.(开始调试项目和检查Debug> Windows> Modules.这两个组件被列出,不最优化,并且具有的"加载符号"符号状态).
  • 重置调试元数据和Visual Studio缓存.
    1. 关闭Visual Studio并删除解决方案缓存文件(*.suo).[1]
    2. 删除了每个项目的构建输出(binobj文件夹).(供将来参考:在Windows资源管理器中打开解决方案文件夹,然后在搜索框中输入:" type:folder AND (name:=bin OR name:=obj)".
    3. 删除了程序集缓存文件夹(C:\Documents and Settings\<user>\Local Settings\Application Data\dl3).[2] [3]

这些都没有任何影响.我可以重命名其中一个文件(不重命名类)来暂时解决问题,但这远非理想.

我现在在哪里

我最新的Google搜索的第14页.建议将不胜感激.:)

msbuild debugging debug-symbols visual-studio visual-studio-2012

44
推荐指数
3
解决办法
1万
查看次数