5

当我使用 Visual Studio 2010 调试故障转储文件(本机代码)时,它会尝试从原始构建文件夹加载 C/C++ 源文件(并给出消息"The source file is different from when the module was built. Would you like the debugger to use it anyway?")。消息正确;该文件不是正确的版本。

我希望 VS2010 做的是使用源服务器检查源文件。如果文件当前不存在于其原始构建位置,VS2010 将正确使用源服务器并检索文件的适当修订版(来自 Subversion)。为了强制它检查正确的版本,我必须从原始构建位置物理删除文件。

附带说明一下,VS2005 可以按预期工作(嗯......如我所愿,也许不像其他人所希望的那样)。无论文件的副本是否存在于原始构建文件夹中,VS2005 都会始终从源代码管理中检查出正确的版本。

我相信问题归结为以下之一:

  • 是否有某种设置可以改变 VS2010 查找源文件的优先级?
  • 或者,是否可以让 VS2010 提供一个选择/选项来检查有问题的源文件?(目前我在这种情况下看到的唯一选择是浏览它。)
  • 或者是否可以从搜索中完全排除特定路径(文件夹)?
4

3 回答 3

2

我对 VS2010 也有同样的问题,并试图解决这个问题。我用 procmon 监视了 devenv.exe,但没有看到它正在访问的文件和注册表项有任何异常。当 VS2010 找不到源时,您在错误报告中看到的信息几乎相同。我的解决方案是使用 VS2005,因为它工作正常。我确实在 MSDN 上看到了一些关于类似(如果不相同)错误的通信,他们声称它将在 2012 年的最终版本中修复。我相信我有 2012 年的最终版本,它也有同样的问题。

于 2012-11-05T14:44:21.137 回答
0

这是一个可能稍微复杂的解决方案

1) 创建一个脚本来下载和替换 pdb 文件(一个 .bat,一个 python 脚本,等等)

2)在VS2010中创建一个新的外部工具(工具->外部工具->添加)

3)将工具指向您的脚本并将任何特定于项目的内容作为参数传递给它

4)在您的项目中创建一个构建后或预构建步骤,该步骤将调用您的新外部工具(项目属性->构建事件->任何)

这是很多工作,但至少它将完全集成到您的构建过程中。

注意:有时我注意到我的后期构建步骤不会运行,除非我至少在 cpp 文件上进行了编译。我通常按​​ F7 并构建一些源代码,然后完全构建,以确保一切按预期工作。

于 2012-11-05T14:34:00.890 回答
0

调试故障转储文件时,可以将本地源目录更改为不同的名称。

或者,您可以将构建目录更改为与本地目录不同的路径。

于 2013-11-26T02:20:43.763 回答