专栏首页菩提树下的杨过用VS2010调试微软开放的部分源码

用VS2010调试微软开放的部分源码

msdn上有一篇讲解如何用vs2008调试源码的文章:http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx 今天在vs2010上试了下,发现其实也可以,关键设置二个地方:

然后换到Symbols

在Cache symbols in this directory这里选择一个本机目录(用于存放下载源代码pdb文件)

ok,已经成功一半了,为了更方便的一次性全部下载,你也可以到codeplex网站下载一个NetMassDownLoader的小工具,地址是 http://www.codeplex.com/NetMassDownloader/

该工具可以直接用命令行一次性下载所有微软开放的源代码:

D:\software\NetMassDownloder>NetMassDownloader.exe -d D:\software\NetMassDownloder\src

这样D:\software\NetMassDownloder\src目录中将会下载到很多文件,如下图:

然后随便创建一个WinForm应用,写几行代码:

using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Text = "Debug me!";
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Hello World!");
        }
    }
}

在Text="Debug me!"这里设置一个断点,运行

在Call Stack窗口中,选择System.Windows.Forms.dll,然后右击,选择Go To Source Code,然后就看到了传说中的Form.cs的源码

不过,微软只开放了一少部分代码,其它没有开放的代码,也可以利用Reflector工具来查看,比如象Array.Sort方法,网上都说微软内部使用的是快递排序算法,但是最好还是眼见为实,打开Reflector,定位到System,找到Array类,以及其中的Sort方法

点击右侧代码中的Sort方法

OK,右侧的代码中,已经能看到QuickSort这个方法了,继续

总算得见真身了!

后记:这篇文章主要是给想“深究.net源代码,但是又不知道如何下手”的朋友准备的,另外mono项目(可简单理解为.net在非windows平台上的实现)其中也有不少源码,其内部实现也值得一看。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SqlTransaction事务使用示例

    using System; using System.Data; using System.Data.SqlClient; using System.Co...

    菩提树下的杨过
  • .net程序员使用Oracle新手上路指南

    虽然oracle,sqlserver都是关系型数据库,sql语句大部分也差不多,但是从sqlserver换到oracle还是有很多不适应的地方,本文旨在帮助广大...

    菩提树下的杨过
  • winform运行时如何接受参数?(示例)

    关键是在Main函数中处理,示例如下 using System; using System.Collections.Generic; using Syste...

    菩提树下的杨过
  • 作为程序员,有没有让你感到既无语又崩溃的程序命名?

    IT故事会
  • 从编程小白到全栈开发:基于框架开发服务端

    上文中,我们了解了关于服务器端的一些概念知识,尤其是HTTP协议相关的最基本知识点,今天我想跟大家分享一下在平时正真的开发中,是如何来利用和体现这些内容的。

    一斤代码
  • Mock System.in和检查System.out

    做在单元测试的时候,会遇到测试数据依赖于用户输入的情况,类似于代码Scanner scanner = new Scanner(System.in);。下面提供一...

    FunTester
  • 数据揭示疫情期间电力需求变化,电力企业巧用人工智能应对

    新型冠状病毒的传播,导致COVID-19促使美国各州和地方政府制定了居家隔离的政策,并关闭了一些企业。数百万人居家隔离,这种转变不仅给互联网服务提供商、流媒体平...

    大数据文摘
  • 【趣味】这么简单的代码这样用,你会玩吗?

    编程太累了吧?Bug太多了吧?腰太酸了吧?快来看看吧!!老九君精心为各位喜欢挑战和刺激的小伙伴们准备了一些有趣而不乏烧脑的代码,让你换换脑,活动活动逻辑思维,换...

    老九君
  • 微信小程序开发:使用字体图标的方法

    在微信小程序开发过程中,图标的使用是很常见很普遍的。一般情况下,在微信小程序项目的文件目录里面images里面,可以直接引用本地的图标文件,但是通过使用字体图标...

    三掌柜
  • 编写可测试的JavaScript代码

    ①使用敏捷开发,并不一定意味着应用程序完成得更快且质量更高,敏捷开发最大的优势是它处理需求变更的方式。

    硬核项目经理

扫码关注云+社区

领取腾讯云代金券