首页 > 代码库 > VS2010下调试.NET源码

VS2010下调试.NET源码

微软走向开源,是时候用vs去单步调试进入源码了。参考地址:http://blog.csdn.net/waxgourd0/article/details/6600182

可供参考的文章:https://msdn.microsoft.com/en-us/library/Cc667410.aspx

  1、工具- 选型 – 调试 - 常规,按照下图修改我框起来的地方:技术分享

 

      2、工具- 选项 – 调试 - 符号,按照下图进行配置:技术分享

 

      这里注意你只需要在位置里添加http://referencesource.microsoft.com/symbols这一项即可,后面是在编译过程中自己产生的,然后将符号缓存路径改为你希望放置的地方,在这里我的路径是D:\development\NetMassDownloader\src(我使用NetMassDonloader没有成功,总是搜索到可供下载的PDB文件为0,我使用的NetMassDownloader的版本为1.6.0.0,按照发布说明已经支持VS 10.0了,如果有谁知道怎么解决请告诉我一下),注意对此路径一定要有读写权限,最后勾选“除排除模块之外的所有模块”。

 

      然后新建一个WPF的工程,我只是在界面上加了一个按钮,简单实现了一个按钮事件:

[csharp] view plain copy
 
print?
  1. private void button1_Click(object sender, RoutedEventArgs e)  
  2.         {  
  3.             MessageBox.Show("hello word");  
  4.         }  
技术分享
private void button1_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("hello word");
        }


      在MessageBox.Show("hello word")上设置断点,运行之后在调用堆栈上就可以观察到调用过程:

技术分享

      右键点击非灰色的可以发现可以查看源代码:

技术分享

 

      F11单步执行的时候可以发现以前不能查看的代码这时也可以跟深层地追踪源代码:技术分享

      

       灰色部分右键点击之后发现”转到源代码“不可用,这时在加载符号中选择如图所示,就可以查看源代码,期间会有下载相应PDB的过程:

技术分享

      

       至于加载信息显示如下:

技术分享

 

       如上图所示我在编译以前别的VS平台编译过的工程(经过转换)无法使用转到源代码,加载信息同样如上所示,我当时以为是前两项没有找到PDB的缘故。当我新建一个工程编译一次后,除了新建的这个工程可以使用转到源代码,原本以前平台编译过原本不能使用“转到源代码”功能的工程也同样可以使用此功能了,看来上面的加载信息与能否使用调试源码没有必然联系,在这里希望达人解答一下上面的含义。

       最后MS并没有将全部的源代码都开源,所以有时在使用时会有“没有可用的资源”的提示,这时如果还要查看源码的话可以按照堆栈的层次用Reflector直接查看源码。

VS2010下调试.NET源码