【发布时间】:2011-08-27 04:37:05
【问题描述】:
Visual Studio 2010 中何时启用“浏览以查找源代码”? (见下文)
另外,我想启用它,以便我可以浏览到已经下载的源代码 来自http://referencesource.microsoft.com/ 的文件。
这将很有用,因为 Microsoft 并不总是在发布 PDB/source 代码及其最新补丁的同时发布。因此,例如,如果我想进入 DateTime,我真的不关心不涉及 DateTime 的最新补丁。我只想浏览我从http://referencesource.microsoft.com/ 下载的代码。
经过一番调查,我发现 dia2dump 是查看 PDB 文件内容的有用工具。 (在C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump\)
看起来当我看不到 DateTime 之类的源代码时,使用 .NET Framework 单步执行时,实际上会下载一个 mscorlib.pdb 文件。
但如果你用 dia2dump 查看它,它不包含源文件映射。换句话说没用,因为即使你可以像我最初的想法那样浏览到源代码,它也行不通,因为没有源文件映射,也没有函数的起始地址,而且还有很多东西丢失了:(
我认为这里的解决方案是使用.NET Reflector Pro 或将虚拟机保留在手边,发布包含源代码的框架版本,然后禁用更新。
【问题讨论】:
-
“无法找到或打开 PDB 文件”消息可能会出现在加载的 DLL 旁边的模块加载输出窗格中,即使您知道 PDB 文件存在于 DLL 旁边。在这种情况下,只需对 DLL 进行清理并重新编译,通常 DLL 符号就会正确加载。我估计这是一个 VS 错误,因为无法强制包含 PDB 文件,并且使用 clean 选项是不直观的。
-
导致我执行清理操作的原因是我注意到 PDB 文件上的时间戳从未更改,即使我重新编译并且即使我在编译之前删除了 PDB 文件。只有 clean 操作会导致重新生成 PDB 文件。
标签: c# .net visual-studio-2010 debugging pdb