1

我刚刚开始尝试使用 Microsoft 工具来设置符号和源服务器。我已经使用 p4index 成功索引了我的源文件,更新了 .pdb 文件并更新了符号服务器。我已将 Visual Studio 设置为使用我的符号服务器。

一切正常:当我通过我的 exe 作为独立 exe 进行调试时,pdb 被加载,源代码的正确版本从 perforce 导出到临时位置并显示在 Visual Studio 中。

那有什么问题呢?如果我尝试在构建我的 exe 的机器上进行调试,那么 Visual Studio 会在本地找到源代码。问题是这是一个修改过的文件,而不是构建 exe 时对应的源代码的正确版本。VStudio 甚至知道这一点,并弹出一个请求者说“源文件与构建模块时不同。你希望调试器仍然使用它吗?”

如果我单击否,那么我只会得到一个文件对话框来手动定位源。

有没有办法让 vstudio 回退到使用源服务器,或者最好先使用源服务器,然后再查看本地?

我正在使用 Visual Studio 2012 和 perforce

4

2 回答 2

1

在遇到同样的问题后,我最终将其范围缩小到如果 pdb/调试器期望找到它的位置已经有一个文件,Visual Studio 将不会运行 P4 PRINT 命令。

例如,如果索引源文件位于 C:\Toto\Source.cpp 中,则当 Visual 正在查找该文件时,该文件的唯一存在将阻止 P4 PRINT。

如果我重命名它,Visual 会在另一个不相关的文件夹(符号缓存传递)中正确打印文件。

这不是修复,这只是一个原因,但我仍在调查。此行为在 windbg 中不存在。

于 2015-11-25T17:09:25.847 回答
1

如果其他人发现这个线程并遇到同样的问题,我的解决方案是在选项 -> 调试 -> 常规中启用“要求源文件与原始版本完全匹配”。

它仍然会更喜欢本地副本,但前提是它们是相同的,在这种情况下,它是从源代码控制服务器获取的相同版本。如果它不是正确的,它现在将显示来自源代码控制服务器的正确的。

于 2019-11-15T21:53:22.087 回答