WinDbg+Rotor解析WinForm调用堆栈及实现
前段写过一篇文章“CLR探索系列:深入追踪托管exe加载执行过程”,在那篇文章中,主要是侧重静态代码的分析,追踪源代码的流程一步一步看是如何实现的。这次,写一篇文章,结合Windbg,从一个托管应用程序执行的调用堆栈开始,追踪其调用堆栈中的线索,以及这些托管应用程序执行中调用的功能实现,来展示托管代...
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...
windbg中无法加载mscorwks.dll, Win32 error 0n2
抓到一个mini dump,执行!clrstack,会提示如下错误:*** WARNING: Unable to verify timestamp for mscorwks.dllFailed to load data access DLL, 0x80004005Verify that 1) you...
Solution of Problems in Building sscli via Visual Studio 2008
前些天,发布了一个能够在Visual Studio2005查看sscli源代码的项目文件。不过,在VS2008中编译sscli,会出现一大堆错误。这里,有幸在Jeremy Kuhne's Blog上面找到了一篇文章来解决这个问题。原文链接可以点这里。这里,时间原因就不翻译过来了,希望对sscli团队...
XmlSerializer带来的性能问题及解决办法
(本文中的思路、二元hashtable等,大力感谢Leo Chen的帮助!)对于XmlSerializer带来的内存占用过高,最终导致Out Of Memory的问题,参见以前这个链接:http://www.cnblogs.com/juqiang/archive/2008/01/15/1039936...
网站High CPU分析
网站升级后,说有High CPU的问题。mstsc上去后,看了一下,果然如此,w3wp.exe的cpu几乎一直是满的,我的远程桌面操作也很慢。下载下来windbg,装好,抓了两个dump。首先!runaway一下,0:022> !runawayUser Mode Time Thread Tim...
CLR探索系列:托管PE/COFF文件格式侧窥
一直都想写篇文章来说说那些尘封在PE/Coff文件格式下的那些事,还有Metadata和EEClass是如何表现了一个静态的PE格式文件在内存中的映射结构。在这篇文章里,我不去介绍windows下PE文件的具体格式,也不去介绍一个托管或者是非托管PE文件的加载运行方式,更加不去介绍一个PE文件里面的...
判断GC运行模式的几种方法
上次提出了一个问题:一个托管进程,如果运行在一个双核CPU的机器上,GC是运行于Server GC模式,在假设CPU没有Hyper thread功能的话,这个托管进程会有几个GC Thread?可以用调试工具来证明你的判断吗?这个问题的答案,想必很多人也知道,几个cpu就几个GC Thread。不过...
提十个有趣的关于.Net CLR,GC的PopQuiz
近日研究CLR和GC,在msdn blog上面看到MS CLR测试小组的一个女技术员提出了十几个问题,感觉问题都挺有趣,也有一定的难度,遂加以修改,删除了几个又添加了几个,广泛征集回答 ^_^1. 一个托管进程,如果运行在一个双核CPU的机器上,GC是运行于Server GC模式,在假设CPU没有H...
CLR探索系列:GC Heap架构及其实现(垃圾回收系列)
在CLR探索系列的研究DotNet下的垃圾回收器这几个博文里,就先说说GC Heap结构吧,至于垃圾回收的详析算法实现,以后再写了。在一个托管进程被创建以后,在托管进程的内存空间里面,包含了System Domain,Shared Domain,Default Domain,以及一系列的Heap,有...
CLR探索系列:Windbg+SOS剖析揭示域世界
在CLR的世界中,有一系列的令人Amazing的技术和架构。其中,CLR对应用程序在内存中内存分配,执行模型,程序之间的交互等一系列的技术,值得每一个致力于DotNet平台的技术人员深究。编程人员在开发的过程中,如果把程序集的加载(Assemblies Load),反射(Reflection),寄宿...