Jason Heck's blog

爱好折腾电脑、幻想、探索未知事物,对挨踢业和网络安全方面十分感兴趣,横向发展,广而不精。作息时间不定,上线时间诡异,QQ常年隐身,偶尔上线,开源产品的支持者,珍爱生命,远离微软,病毒爱好者和Web前端爱好者。虚拟主机评测http://www.idcpw.com

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在Visual Studio 2008中可以通过调试进入.NET Framework的源代码,从这个意义上说,.NET Framework是开放部分源代码了

在Visual Studio 2008中可以通过调试进入.NET Framework的源代码,从这个意义上说,.NET Framework是开放部分源代码了,但现在只支持调试模式下进入源代码。而其,这个功能在Visual Studio 2008 Express版本中不能支持。注意,所有的源代码都是从指定的远程服务器上按需下载的,而不是VS2008安装后就自带的。

  要想使用这个功能,需要额外的配置一下,因为默认配置中VS2008是不开启这个功能的,那么如何配置呢?在Scott的Blog中有专门的说明,但是他的源代码服务器URL给错了。收听了一下他们的采访视频,确定了正确配置的方式,如下:
  在VS2008中,菜单Tools->Options后,
(1)如果你在VB Profile环境下运行,需要将左下角的Show All Settings勾选上(否则将不会出现Debugging选项),然后选择Debugging->General。
(2)如果你不是在VB Profile下,则直接选择Debugging->General。
(3)去掉“Enable Just My Code”的勾选。代表不仅仅只是调试我们自己开发的代码(言外之意也要调试.NET Framework的源代码)
(4)打开“Enable Source Server Support”勾选。代表开启源代码服务器的支持(言外之意在需要的时候去源码服务器获取.NET Framwork的源代码
(5)选择“Debugging->Symbols”页,然后设置符号下载URL和缓存位置。设置为http://referencesource.microsoft.com/symbols 。
(6)设置符号的本地缓存位置。如:C:\temp\symbols。注意确保你的Windows账户能读写这个位置。
(7)打开“Search the above locations only when symbols are loaded manually”选项。表明只有当symbols被手动加载得情况下才使用。在这种模式下,第一次进入需要进入.NET Framework中的某一个dll时,需要手动执行Load Symbols操作(注:每个dll只有一次,之后它就被缓存到(6)所设置的本地缓存中了)。如果嫌麻烦,这里也提供了一个简单的方法,即勾选“Load symbols using the updated setting when this dialog is closed”,表明当这个设置窗口关闭的时候,立即下载所有的symbols(这将需要几分钟~几十分钟,根据网速决定),这样就不用以后再手动Load symbols操作了。
通过以上的设置后,在调试程序的时候就可以进入框架的源代码了。通过例子看一下,创建这个工程,并设置个断点。运行程序到断点停止时,到调用堆栈窗口(CTRL+ALT+C)右键单击一个dll(如:System.Windows.Forms.dll),然后选择“Load Symbols”,这样会给System.Windows.Forms程序集加载符号。注意:如果在配置过程中采用了当时一次性下载了所有的symbols的话,这里的Load Symbols可以省略不做。
现在可以查看代码了。你可以Step In(F11)上面的的代码行,在第一次进入代码的时候,我们会显示EULA,点击ACCEPT,然后这个源代码就会下载下来,可以调试.net框架源代码了。
通过这种方式查看的源代码并非全部,这次发布的版本中包含的命名空间有:

◆System
◆System.CodeDom
◆System.Collections
◆System.ComponentModel
◆System.Data
◆System.Diagnostics
◆System.Drawing
◆System.Globalization
◆System.IO
◆System.Net
◆System.Reflection
◆System.Runtime
◆System.Security
◆System.Text
◆System.Threading
◆System.Web
◆System.Web.Extensions
◆System.Windows
◆System.Windows.Forms
◆System.Xml


错误修正:

以中断模式或运行模式显示“调用堆栈”窗口
在“调试”菜单中选择“窗口”,然后单击“调用堆栈”。
或者Ctrl+D,C
posted on 2008-10-25 09:40  Heck  阅读(567)  评论(0编辑  收藏  举报
关于我们 | 石器时代| 主机评测 | IDC评测 | IDC投诉 | IDC大全 | 广告服务 | 友情链接 | Heck's Blog
Copyright © 2010 - 2012 石器时代旗下网站 All Rights Reserved 石器时代工作室
联系电话:0755-84256821 服务QQ:想我就吻我想我就吻我 邮箱:Heck@hecks.tk
石器时代技术团队专注开源产品研究,您人生道路上真诚的朋友!感谢www.Hecks.tk 提供相关链接。