zoukankan      html  css  js  c++  java
  • 用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平台上的实现)其中也有不少源码,其内部实现也值得一看。

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    JDBC_查询
    微信web小程序开发1
    小型人口普查系统2
    小型人口普查系统1
    JSP内置对象作用域
    Session和Cookie的区别
    Cookie
    Session
    c++中嵌入python
    目标文件obj的各段 2
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1914510.html
Copyright © 2011-2022 走看看