【问题标题】:Visual Studio 2008 - code out of sync with the location for debug sourceVisual Studio 2008 - 代码与调试源的位置不同步
【发布时间】:2020-12-25 06:35:10
【问题描述】:

我已将Visual Studio 2008 项目的标签签​​出到新的本地文件夹中。 (本地文件夹与我通常处理 HEAD 代码的位置不同。)

我对项目进行了“清理”和“重建”——它创建了一个 DLL 文件。它已成功重建并位于正确的构建区域。

当我查看Solution Explorer 中的文件时,它显示了新文件夹中所有文件的正确绝对路径。

问题是当我设置断点并尝试调试代码时,它永远不会命中断点。当我右键单击断点并查看“位置”时,它会显示文件上传到SVN 时文件在 HEAD 区域中的路径。我看不出它是从哪里得到这条旧路径的。

【问题讨论】:

  • 您确定加载了正确的 DLL 吗?您是否尝试过故意更改一些代码并构建以查看输出是否真的发生了变化?此外,如果有多个项目,其中一些引用其他项目,我会仔细检查 DLL 的输出路径,我曾经发疯,因为我的一个项目正在输出到另一个目录,这产生了一个非常相似的问题。
  • 重命名解决方案目录中隐藏的.suo文件。
  • 我尝试删除 .suo 文件,但没有帮助。即使在我运行“开始调试”之前,我也可以右键单击有断点的位置并查看位置路径,它会显示旧路径。我可以看到正在构建的 dll,它有一个当前时间戳。
  • 好的。我认为实际上是 Hans 建议删除 .suo 文件。在我关闭解决方案并重新打开它之后,它现在似乎正在选择正确的路径。我最初删除了 .suo 文件,然后进行了清理和重建。

标签: c# visual-studio debugging


【解决方案1】:

以下是可能出错的小清单:

  1. 验证加载的模块(Ctrl + D + M 通常)。查看您的代码模块是否从您希望它们加载的位置加载。

  2. 进行清理/重建时,仅清理项目的输出(如果我有构建 MyASsembly.dllMyAssembly 项目,则仅删除与该项目相关的文件。引用的任何其他程序集在清理过程中不会被删除。

  3. 尝试隔离问题。使用 F10 开始调试(进入调试的代码)。查看入口点是否正常,但只有您尝试访问的其他一些代码取自错误的位置。

【讨论】:

    【解决方案2】:

    启动调试器后,使用菜单 Debug -> Windows -> Modules 可能有助于查看 Visual Studio 的确切位置从加载程序集。

    另外,请确认您是在调试模式下构建的。我不愿意承认,有时我在发布模式下构建,然后想知道为什么调试器不会在断点处停止。

    【讨论】:

      【解决方案3】:

      Visual Studio 编辑器不理解 unix 样式的行尾。尝试对行为不端的源文件使用 unix2dos util。

      【讨论】:

      • 这确实解决了我的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      相关资源
      最近更新 更多