`

VS2010下如何调试Framework源代码(即FCL)

阅读更多

 

VS2010下如何调试Framework源代码(即FCL)

2011-04-02 13:40 by 陆敏技, 18 visits, 网摘, 收藏, 编辑

怕忘记,重新记录一下。

有一种提高自己编程能力的好办法,就是看看.net framework的源码是如何写的?我们在追踪bug的时候,也往往需要追踪到.net framework的源码中去。按照如下方法设置vs2010,即可追踪到.net framwork的源代码中去。

image

image

可以看出,我将pdb文件放在了d:\msSource\MicrosoftPublicSymbols目录下面,这样在调试的时候,vs会自动去该目录下面找pdb文件。

我们可以看看这个目录下的文件

image

调试源码后,我们会找到一些平时不怎么写的东西。比如我追踪 IEnumerable<int>的扩展方法Sum,可以看到

如下的代码:

public static int Sum(this IEnumerable<int> source) {
            if (source == null) throw Error.ArgumentNull("source");
            int sum = 0;
            checked {
                foreach (int v in source) sum += v;
            }
            return sum;
        }

这样,我们就学会了一个扩展方法的写法,何乐而不为呢?

编程的快乐,往往在乎一念之间。 

PS:代码是从微软服务器上下载的,所以设置完毕后,第一次下载过程可能有点长。

更详细的文档如下:

Using the Microsoft Symbol Server to obtain symbol debugging information is now much easier in VS 2010. Microsoft gives you access to their internet symbol server that contains symbol files for most of the .NET framework including the recently announced availability of MVC 2 Symbols. 

SETUP 

In VS 2010 RTM, go to Tools –> Options –> Debugging –> General. Check “Enable .NET Framework source stepping” 
image 
We get the following dialog box

 image 
This automatically disables “Enable My Code” 
 image 
Go to Debugging –> Symbols and Check “Microsoft Symbol Servers”. You can selectively exclude modules if you want to. 
  image 
You will get a warning dialog like so: 
image 
Hitting OK will start the download process 
  image 
The setup is complete. You are now ready to start debugging!


DEBUGGING

Add a break point to your application and run the application in debug mode (F5 shortcut for me). Go to your call stack when you hit the break point. Right click on a frame that is grayed out. 
image 
Select “Load Symbols from” “Microsoft Symbol Servers”. VS will begin a one time download of that assembly. This assembly will be cached locally so you don’t have to wait for the download the next time you debug the app. 
image  
We get a one time license agreement dialog box 
image

You might see an error like the one below regarding different encoding (hopefully will be fixed). 
image   
Assemblies for which the symbols have been loaded are no longer grayed out. Double clicking on any entry in the call stack should now directly take you to the source code for that assembly.

image 

image

AFAIK, not all symbols are available on the MS symbol server. In cases like that you will see a tab like the one below and be given the option to “Show Disassembly”.

image

Enjoy!

分享到:
评论

相关推荐

    c#源代码开发集锦(包括调试)

    在"C#源代码开发集锦(包括调试)"中,我们发现这是一份全面的C#编程资源,专为初学者设计,旨在帮助他们更好地理解和掌握C#编程语言。这份资源包含了可执行文件和完整的源代码,使得学习者可以通过实际运行和调试...

    DELPHI商用浏览器源代码

    在"DELPHI商用浏览器源代码"中,我们可以学习到如何使用Delphi的VCL(Visual Component Library)或FCL(Framework Component Library)来创建用户友好的图形界面,例如地址栏、前进/后退按钮、书签管理等。...

    .NET文件上传下载系统源代码合集

    ### .NET文件上传下载系统源代码合集知识点详解 #### 一、概述 .NET文件上传下载系统源代码合集是一款基于.NET平台开发的文件管理工具,主要功能包括文件的上传与下载。本合集提供了完整的源代码,方便开发者进行...

    VISUALC#.net教程和源代码

    【标题】"VISUALC#.net教程和源代码"涵盖了C#编程语言在.NET框架下的基础知识与实践应用,尤其强调了Visual Studio IDE的使用。这个教程可能是为了帮助初学者和有经验的开发者深入理解C#语言特性以及如何利用它来...

    C#课件Net FrameWork简介

    这包括使用 Visual Studio IDE 创建新项目,编写源代码,然后进行编译和调试。 2. **变量类型与命名规则**:理解 C# 中的基本数据类型,如整型(int)、浮点型(float)、字符串(string)和布尔型(bool)。学习...

    NET程序员面试指南 源代码

    .NET程序员面试指南是针对准备进入或已经在.NET领域工作的开发者们的一份重要参考资料,它涵盖了.NET技术栈中的核心概念、编程语言、...同时,分析源代码还能锻炼问题解决和调试技巧,这对于面试和实际工作都至关重要。

    C#项目开发案例全程实录源代码

    在本资源中,"C#项目开发案例全程实录源代码"是一个专注于C#编程语言的实践性学习资料。这个压缩包包含了一系列的C#项目开发案例,旨在帮助开发者通过实际操作来提升C#编程技能。以下是这些案例可能涉及的重要知识点...

    《Visual Basic .NET程序设计教程》源代码

    《Visual Basic .NET程序设计教程》是一本深入探讨VB.NET编程技术的专业书籍,其源代码提供了丰富的实例,帮助读者更好地理解和应用所学知识。VB.NET是Microsoft开发的一种面向对象的编程语言,它是.NET Framework的...

    net framework4.0

    此框架自2010年发布以来,极大地推动了Windows应用程序的开发进程,提供了丰富的类库和编程模型,支持多种编程语言,如C#、Visual Basic .NET、F#等。 首先,我们来深入了解一下.NET Framework 4.0的核心组成部分。...

    购物商城系统_dotnet电子商务系统源代码.rar

    【标题】"购物商城系统_dotnet电子商务系统源代码.rar"所代表的是一个基于.NET技术开发的电子商务购物商城系统的源代码包。这个系统可能是为在线零售业务设计的,它集成了商品展示、购物车、订单处理、支付接口等...

    Framework题库ATA全部

    .NET Framework包含了Common Language Runtime (CLR) 和 .NET Framework Class Library (FCL),前者是执行代码的基础平台,后者则是一系列预先编写好的类,涵盖了网络通信、数据库交互、文件操作等多个方面。...

    .net 网上书店源代码

    《.NET网上书店源代码深度解析》 在当今数字化的时代,网上书店已成为图书销售的重要渠道。本项目基于.NET框架,采用ASP.NET技术和C#编程语言,构建了一个完整的网上书店系统,实现了图书展示、购买、销售等功能,...

    .NET Framework 试题及其答案 (10)

    它包括Common Language Runtime (CLR) 和 Framework Class Library (FCL),提供了类型安全、内存管理、异常处理等功能。 2. **试题:什么是CLR?** **答案:** Common Language Runtime(CLR)是.NET Framework的...

    sscli20.zip

    《深入剖析Microsoft .NET Framework 2.0:FCL、BCL与RUNTIME源代码解析》 Microsoft .NET Framework 2.0是.NET框架的重要版本,它为开发者提供了丰富的类库和运行时环境,用于构建高效、可靠的Windows应用程序。...

    基于C#_的Framework程序设计_课后答案

    命名空间可以嵌套,也可以分布在多个文件中定义,单个源代码文件也可以定义多个命名空间。 **4. 在默认情况下,同一命名空间的成员具有的访问性是** - 正确答案:c internal - **知识点解析**:在.NET Framework中...

    Microsoft .Net Framework下载安装器MFC源码

    当你在VS2017中打开这个文件,它会加载相关的项目和设置,使得你可以编译、调试和运行源代码。`MFCApplication1`很可能是该项目的主要源代码文件,包含MFC类的实现,比如主窗口类、对话框类或自定义控件类,以及应用...

    计算机软件毕业设计_DOT.NET源码教务管理平台-权限及公共模块设计与开发_计算机毕业设计源码_计算机毕业设计源代码.rar

    该框架的核心部分包括Common Language Runtime (CLR) 和 Framework Class Library (FCL),它们为开发者提供了强大的功能和便捷的开发环境。 教务管理平台是高校日常教学管理的重要工具,通常包括学生信息管理、课程...

    .NET Framework 试题及其答案(7)

    - FCL(Framework Class Library,框架类库):包含了BCL和其他组件,如ASP.NET、ADO.NET等。 2. **C#语言特性**: - 类型系统:C#是强类型语言,所有变量必须预先声明其类型。 - 面向对象:支持类、接口、继承...

    .NET Framework 1.1-2.0-3.5 Installer for InnoSetup

    - `src`:这个目录可能包含了源代码或资源文件,例如程序的源代码、图标、帮助文件等。 - `bin`:通常存放编译后的可执行文件和其他二进制资源,如DLLs和配置文件。 - `scripts`:可能包含了额外的脚本文件,如...

    .Net.Framework3.5开发技术详解1.rar

    《.Net Framework 3.5开发技术详解》是针对微软.NET Framework 3.5这个重要开发平台的一本详细教程。这本书分为两个部分,我们这里讨论的是第一部分。.NET Framework 3.5作为.NET Framework系列的一个重要版本,它在...

Global site tag (gtag.js) - Google Analytics