c#3.0系列:Object Initializer 和 Collection Initializer
对象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers),就是简化我们的代码,让本来几行才能写完的代码一行写完。这样在LINQ的使用中,我们才不会把一个LINQ表达式写的复杂。 Object InitializersObject In...
Windbg+Rotor:Managed Process中的各种Special Threads分析
这几天Oracle培训,数据库功力倒是没太大长进,倒是Debug,Windows架构和实现还有CLR的觉悟突飞猛进。开篇前首先3ks下rick,他把他写的一票经典的文章都发到sscli.cnblogs.com团队里面来了。Rick可是我在看雪bbs上面久仰的大牛…由于写的文章时间在创建团队的时间之前...
c#3.0系列:Extension Method
我们说在C#3.0中,引入了一些列新的特性,但是个人认为Extension Method这个特性是最爽的,最有创新的。它真正的解决了:在保持现有Type原封不动的情况下对其进行扩展,你可以在对Type的定义不做任何变动的情况下,为之添加所需的方法成员。下面我就来讲讲。C#3.X出来之前大家都知道ja...
c#3.0系列:Automatic Property
之前的做法:在c#3.x出来之前,相信大家已经习惯通过一个private field + public property的发式来定义和实现一个public Property。就如下面方式实现。1classperson2{3privateintage;4privatestring_name;5publ...
c#3.0系列:Anonymous Type In CLR(3.5)
我们说Anonymous Type是C# 3.0的新的特性,而没有说Anonymous Type是.NET Framework 3.5的新特性。这是因为Anonymous Type仅仅是.NET Programming Language和相应的Compiler的新引入的特征。而对于.NET Fram...
使用WinDbg+SOS及WinDbg Script寻找内存中DataTable第M行N列的值
DataTable在内存中是如何存储一张表的结构的呢?如何使用Windbg直接在内存中找到一个DataTable里面的第M列第N行的值呢?这的确是一个比较有趣的问题^_^下面的内容,主要是讲如何用windbg+sos来看看一个DataTable在内存中是如何存储的,以及寻找内存中一个DataTabl...
WinDbg+Rotor解析WinForm调用堆栈及实现
前段写过一篇文章“CLR探索系列:深入追踪托管exe加载执行过程”,在那篇文章中,主要是侧重静态代码的分析,追踪源代码的流程一步一步看是如何实现的。这次,写一篇文章,结合Windbg,从一个托管应用程序执行的调用堆栈开始,追踪其调用堆栈中的线索,以及这些托管应用程序执行中调用的功能实现,来展示托管代...
探索 sscli, 开启 CLR 的大门 —— 配置环境详解
(博主:好久没有写东西了,真不知道该如何下笔,也许我的思路比较混乱,还请大家见谅。)心得: 以前我一直是做dotnet开发,对于整个clr的架构非常感兴趣。而且对整个运行环境也进行过一些分析与跟踪。在这里给希望研究CLR 内部原理以及实现的用户一个建议:sscli 不等于 DotNet Framew...
Object内存核心结构及实现完全剖析(MethodTable、EEClass与MethodDescChunk)
无疑,一个Object在CLR中的逻辑结构是相当复杂的。前段时间,写了一篇CLR探索系列:System.Object内存布局模型及实现研究,侧重从System.Object这个基本类的基本内存布局,实现和结构来研究了下。这是远远不够的。今天就从如何存储一个Object中的Field,Method等信...
Getting the right Exception Context from a Memory dump Fixed
吃饭回来,看到Share Source CLI团队的rss聚合上面Debug团队的juqiang发了一篇文章,说抓了一个minidump出现了:WARNING: Unable to verify timestamp for mscorwks.dll的错误。上次我在查看一个mini Dump的时候,n...
Solution of Problems in Building sscli via Visual Studio 2008
前些天,发布了一个能够在Visual Studio2005查看sscli源代码的项目文件。不过,在VS2008中编译sscli,会出现一大堆错误。这里,有幸在Jeremy Kuhne's Blog上面找到了一篇文章来解决这个问题。原文链接可以点这里。这里,时间原因就不翻译过来了,希望对sscli团队...
在Visual Studio 2005中打开Share Source CLI 2.0(Rotor)
我想,有过研究sscli 2.0源码经历的朋友们看到这个标题,一定挺的高兴吧。在以前参阅SSCLI2.0的源码的时候,一直用的EditPlus。感觉在整个VM或者是PAL目录下面寻找对一个类的应用或者一个方法的定义相当的不方便。经常F3搜索整个目录中文件包涵的一个字符串,而且经常一不留神按F3大盘就...
CLR探索系列:托管PE/COFF文件格式侧窥
一直都想写篇文章来说说那些尘封在PE/Coff文件格式下的那些事,还有Metadata和EEClass是如何表现了一个静态的PE格式文件在内存中的映射结构。在这篇文章里,我不去介绍windows下PE文件的具体格式,也不去介绍一个托管或者是非托管PE文件的加载运行方式,更加不去介绍一个PE文件里面的...
【开源CLI核心探索团队】sscli探索团队,诚邀请您的加入
你是否真正的了解你所认识的.NET?Rotor、Mono?垃圾收集器、类装入器、类型系统、错误报告系统、应用程序域、配件、代理支持、反射、安全性和代码管理器等等等等的架构、实现。在实现这些名词中遇到的有趣的问题和睿智的解决方案。 在对新技术的追踪和应用中,国内的技术爱好者已经能基本上跟上国外同行的步...
判断GC运行模式的几种方法
上次提出了一个问题:一个托管进程,如果运行在一个双核CPU的机器上,GC是运行于Server GC模式,在假设CPU没有Hyper thread功能的话,这个托管进程会有几个GC Thread?可以用调试工具来证明你的判断吗?这个问题的答案,想必很多人也知道,几个cpu就几个GC Thread。不过...
Quiz:who win in finally vs return?
废话就不多讲了,直接看看下面的例子。1)static int Test() { int val = 1; try { return val; } finally { val = 2; } }2)static int s_val; static int Test() { s_val = 1; try ...