当我使用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将始终从源代码管理中检出正确的修订版。
我认为问题归结为以下之一:
答案 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)
在调试故障转储文件时,可以将本地源目录更改为其他名称。
或者您可以将构建目录更改为与本地目录不同的路径。