gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:41:22 25 4
gpt4 key购买 nike

在我正在处理的团队项目中,如果解决方案中存在另一个同名文件,则在文件中设置断点(例如 IdeasController.cs )将导致调试器行为不稳定。我已经在几个开发人员的工作站上重现了该问题。

示例

我在 IdeasController.cs 设置了断点在我们的 Web API 中:

Breakpoint set in code

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

Debugger highlight does not match code structure

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

Breakpoint spans both files

在某些工作站上,调试器会逐步执行正确的行(无论行突出显示如何);在其他情况下,它会愉快地跳过不相关的行(包括注释和空格)。我猜这取决于它选择显示哪个源文件。

我尝试过的

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

这些是我找到并尝试过的解决方案:

  • 检查了我的构建配置。
    1. 确保项目不是在 Release模式下构建的。
    2. 确保我们 don't have code optimization enabled .
    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 页。如有建议,我们将不胜感激。 :)

最佳答案

如果没有更好的替代方案,您可以将断点放在代码中:

System.Diagnostics.Debugger.Break();

只是不要忘记之后将其删除...

关于visual-studio - 如果多个文件具有相同的名称,Visual Studio 断点会在错误的源文件(或同时多个文件)中中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com