Liv*_*foi 26 .net c# debugging visual-studio-2010 pdb
何时在Visual Studio 2010中启用"浏览到查找源"?(见下文)

另外,我想启用它,以便我可以从http://referencesource.microsoft.com/浏览已经下载的源代码文件.
这很有用,因为Microsoft并不总是使用最新的补丁同时发布PDB /源代码.因此,如果我想进入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来保存虚拟机,使用源代码然后禁用更新的框架版本.
Liv*_*foi 27
每当从Visual Studio进行构建时,通常,除了可执行文件之外,还会获得PDB文件.您可以在..bin\Debug或..bin\Release目录中看到此文件.此PDB文件保持映射到程序集中的源代码行和可执行代码.此外,完成构建的源代码文件的原始位置存储在PDB文件中.这意味着如果您构建一个位于其中的单个文件的类库G:\ClassLibrary\Class1.cs,则此路径将存储在其中ClassLibrary.pdb.从这一切中要记住的重要一点是,如果没有PDB文件,就不可能进行源代码调试.
所以,假设我在我的驱动器上构建G:\ClassLibrary1一个类库.
我给你一个ClassLibrary.dll和一个ClassLibrary.pdb文件,或者你通过从源代码控制中检查它们来获取它们.
您可以ClassLibrary.dll在项目中引用它,并使用库中的类.
如果您现在尝试从库中进入类代码,则会发生以下情况:
Visual Studio尝试在几个位置查找ClassLibrary.pdb文件
1.1如果找不到,则会显示"浏览查找源"页面.请记住,如果没有有效的PDB文件,则无法进行调试.
1.2如果确实找到了PDB文件,它会查看PDB文件并发现您正在尝试调试Class1.cs最初构建的文件
G:\ClassLibrary1\Class1.cs
并在您的计算机上查找该文件.
1.2.1如果找到它,它会自动进入代码.
1.2.2如果找不到,则会出现以下对话框:

如果按"取消",将显示"无可用来源",并且在这种情况下您将启用"浏览以查找源".

为什么?因为您有一个有效的PDB文件,但Visual Studio无法知道您的计算机上ClassLibrary1的源代码在哪里,或者您是否在计算机上拥有它.这就是你得到对话框的原因 - >这样你就可以将Visual Studio指向源代码文件的确切位置.
那么,当您进行浏览以查找源禁用时,您会做什么?
在Visual Studio中,打开菜单Debug - > Windows - > Call stack.
您右键单击顶部调用stak指令,然后选择"符号加载信息".它将显示Visual Studio尝试查找有效PDB文件的位置.
classLibrary1.dll您将收到此消息.程序集及其PDB文件必须完全来自同一版本,否则您将收到此消息.(每次进行构建时,使用组件和PDB文件中的一些唯一编号完成此检查)