强制Visual Studio 2010使用源服务器查找文件

时间:2012-10-26 20:15:02

标签: visual-studio-2010 debugging

当我使用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提供选项/选项来检查有问题的源文件? (目前我在这种情况下看到的唯一选择是浏览它。)
  • 或者是否可以从搜索中完全排除特定路径(文件夹)?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

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

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

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

这是一项很多工作,但至少它会将它完全整合到您的构建过程中。

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

答案 2 :(得分:0)

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

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