配置Visual Studio 以调试.net framework的源代码
看到.net框架代码发布了,兴奋了一下,把在Visual Studio 2008上配置的内容翻译了一下,只翻译了原文的基本步骤,高级用户篇和QA没有翻译。
要欣赏原文请点击这里
基本步骤
注意,这个功能在Visual Studio 2008 Express版里不支持。
1)安装 Visual Studio 2008 QFE。这个QFE只是更新一个Visual Studio调试器的DLL,以便可以获取源代码,
更多细节参加下载页面。
2)运行Visual Studio 2008依次展开Tools->Options->Debugging->General。如果你在Visual Basic Profile环境下
运行,你需要将lower left of the Options Dialog标记为"Show All Settings",然后继续(其它配置没有这个选项).
设置以下两个设置:
关闭"Enable Just My Code"设置
打开"Enable Source Server Support"设置
你的设置会如下面所示:
3)下一步,选择"Symbols"页,然后设置符号下载URL和缓存位置。设置以下三个配置:
设置符号文件位置为: http://referencesource.microsoft.com/symbols
设置缓存位置。保证你的账户能读写这个位置。一个好建议是将这个路径设置为
打开"Search the above locations only when symbols are loaded manually"选项
设置完毕后,应该如下图所示
设置完毕。
调试进入框架的源代码
通过这个例子,我们从一个空的C# Windows Application project开始,同样它可以在VB,Web或WPF工程上工作。创建这个工程:
在Form_Load上设置个断点:
运行你的工程命中断点,到调用堆栈窗口(CTRL+ALT+C).在调用堆栈里,右键单击System.Windows.Forms.dll,然后
选择"Load Symbols"。这样会给System.Windows.Forms程序集加载符号,大小大概10M,所以下载速度就看看你的网络连接速度怎么样了。注意:在这个过程中Visual Studio会没有任何响应的。但是,这个下载对每个程序集来说只需要一次
。这个符号(PDB)文件会缓存在你的机器上,在你刚才定义的文件夹里。
这样就会从服务器上下载这个DLL的符号了,你可以在状态栏里看到一些信息反映这个。注意:这个完成后调用帧字体会变成
黑色,并且行号也可用了。注意:在每次调试会话中你都需要右键单击然后选择"Load Symbols"(但是,第二次的时候,这个符号已经缓存在本地了,所以无需再下载它们)。要了解更多信息请欣赏下面的高级用篇。
你已经下载了Windows Forms DLL的符号,现在可以查看代码了。你可以Step In上面的的代码行,也可以在调用堆栈
里双击某一帧。在这里我们Step In(F11).
在第一次进入代码的时候,我们会显示EULA。花点时间阅读EULA,如果你同意点击ACCEPT,然后这个源代码就会下载下来。
就这样,你可以调试.net框架源代码了。
现在,对每个你想调试的程序集,只要重复上面的步骤就可以了(注意:你只会看到一次EULA,不是每次都会看到的).
有的时候,你要调试的程序集并不在调用堆栈上,比如下面这个例子:
在你调试进入Graphics.DrawRectangle,你需要加载System.Drawing.dll的符号。打开Modules Window(CTRL+ALT+U)。这个列表会显示调试中所有加载的模块(DLLs).在列表中找到System.Drawing.DLL,右键单击,然后选择Load Symbols.
注意:一旦符号文件下载了,符号文件会显示在"Symbol File"列中。
你现在可以使用F11进入Graphics.DrawRectangle的代码了。在这个case中,你会先进入PaintEventArgs.Graphics属性的代码。
基本步骤
注意,这个功能在Visual Studio 2008 Express版里不支持。
1)安装 Visual Studio 2008 QFE。这个QFE只是更新一个Visual Studio调试器的DLL,以便可以获取源代码,
更多细节参加下载页面。
2)运行Visual Studio 2008依次展开Tools->Options->Debugging->General。如果你在Visual Basic Profile环境下
运行,你需要将lower left of the Options Dialog标记为"Show All Settings",然后继续(其它配置没有这个选项).
设置以下两个设置:
关闭"Enable Just My Code"设置
打开"Enable Source Server Support"设置
你的设置会如下面所示:
![](https://i-blog.csdnimg.cn/blog_migrate/92f19f08da824417b934a095bde7146d.png)
3)下一步,选择"Symbols"页,然后设置符号下载URL和缓存位置。设置以下三个配置:
设置符号文件位置为: http://referencesource.microsoft.com/symbols
设置缓存位置。保证你的账户能读写这个位置。一个好建议是将这个路径设置为
打开"Search the above locations only when symbols are loaded manually"选项
设置完毕后,应该如下图所示
![](https://i-blog.csdnimg.cn/blog_migrate/8e66eec9426bb39cebc062f76642c735.png)
设置完毕。
调试进入框架的源代码
通过这个例子,我们从一个空的C# Windows Application project开始,同样它可以在VB,Web或WPF工程上工作。创建这个工程:
在Form_Load上设置个断点:
![](https://i-blog.csdnimg.cn/blog_migrate/1721bc5cf3c64aa3144ea8cac41c1629.png)
运行你的工程命中断点,到调用堆栈窗口(CTRL+ALT+C).在调用堆栈里,右键单击System.Windows.Forms.dll,然后
选择"Load Symbols"。这样会给System.Windows.Forms程序集加载符号,大小大概10M,所以下载速度就看看你的网络连接速度怎么样了。注意:在这个过程中Visual Studio会没有任何响应的。但是,这个下载对每个程序集来说只需要一次
。这个符号(PDB)文件会缓存在你的机器上,在你刚才定义的文件夹里。
![](https://i-blog.csdnimg.cn/blog_migrate/a64648096d45fcd2d64b9159759b580a.png)
这样就会从服务器上下载这个DLL的符号了,你可以在状态栏里看到一些信息反映这个。注意:这个完成后调用帧字体会变成
黑色,并且行号也可用了。注意:在每次调试会话中你都需要右键单击然后选择"Load Symbols"(但是,第二次的时候,这个符号已经缓存在本地了,所以无需再下载它们)。要了解更多信息请欣赏下面的高级用篇。
![](https://i-blog.csdnimg.cn/blog_migrate/214c1bd265752e25252f03af8c5cc2fb.png)
你已经下载了Windows Forms DLL的符号,现在可以查看代码了。你可以Step In上面的的代码行,也可以在调用堆栈
里双击某一帧。在这里我们Step In(F11).
在第一次进入代码的时候,我们会显示EULA。花点时间阅读EULA,如果你同意点击ACCEPT,然后这个源代码就会下载下来。
就这样,你可以调试.net框架源代码了。
![](https://i-blog.csdnimg.cn/blog_migrate/4d5e4fbb35afb6a5a30f48ac6dfc0a55.png)
现在,对每个你想调试的程序集,只要重复上面的步骤就可以了(注意:你只会看到一次EULA,不是每次都会看到的).
有的时候,你要调试的程序集并不在调用堆栈上,比如下面这个例子:
![](https://i-blog.csdnimg.cn/blog_migrate/0a8853a1ecc6594dfcd9b04bf943eb29.png)
在你调试进入Graphics.DrawRectangle,你需要加载System.Drawing.dll的符号。打开Modules Window(CTRL+ALT+U)。这个列表会显示调试中所有加载的模块(DLLs).在列表中找到System.Drawing.DLL,右键单击,然后选择Load Symbols.
![](https://i-blog.csdnimg.cn/blog_migrate/f27020a0fa80b2f1358561ba1411e098.png)
注意:一旦符号文件下载了,符号文件会显示在"Symbol File"列中。
你现在可以使用F11进入Graphics.DrawRectangle的代码了。在这个case中,你会先进入PaintEventArgs.Graphics属性的代码。