随笔分类 -  Debug Skills

Microsoft Micro Framework 3.0对Serial Peripheral Interface 的支持
摘要:在3.0的Micro Framework中,咱可以使用SPI(Serial Peripheral Interface)来和外围设备进行通信了。SPI是一种串口总线系统,和I2C,CAN,USB一样。 使用SPI来进行串口通信中,从设备的通讯模式如下: 两个数据口,一个进一个出,另外两个控制口。在标准SPI通信模式中,设备分为master设备和slave设备。Master设备决定clock信号和线... 阅读全文

posted @ 2008-12-05 23:23 lbq1221119 阅读(2096) 评论(2) 推荐(0) 编辑

使用CorDbg进行托管调试
摘要:Cordbg是和.Net Framework,以及Windows SDK一起ship的托管代码的调试工具,相对于VS来说,它是一个比较low-level的调试工具. 本文的主要目的,就是看看Cordbg如何来进行托管调试,然后演示下其功能,看看其和其它的托管调试工具,譬如MDBG和windbg+SOS有啥不同. Mdbg,是一个使用dbgeng.dll的调试接口来开发的一个开源调试工具,版本ms现... 阅读全文

posted @ 2008-11-17 22:23 lbq1221119 阅读(2658) 评论(4) 推荐(0) 编辑

CLR内核调试之:Malloc函数实现
摘要:自从可以动态调试SSCLI之后,发现这个玩意还真是个宝山,越玩越有意思,就像捅开一扇门,发现门后面还有一座宝山……不光CLR的内部实现细节,可以象是放电影一样呈现在眼前,Visual Studio里面的一些底层的技术,还有OS的底层技术,查看起来那是相当的便捷。 这里就说说malloc函数是具体如何实现的,能够F10,F11动态的在VS里面跟踪其一步一步的实现的源码,真... 阅读全文

posted @ 2008-11-13 20:52 lbq1221119 阅读(5654) 评论(11) 推荐(0) 编辑

Windbg寻找Managed Founction参数值
摘要:问题源自一个Seminar,如何使用Windbg找到在函数调用的时候,所传递的参数的值。 当使用live Debug模式attach到一个managed Process的时候,默认情况下并不显示函数内部之间的调用,这个时候,需要在这个函数没调用之间给下一个断点。 基于对一个托管函数下断点的两种方法,在上面一片文章里面已经讲过了,这里就显的容易多了。首先还是找上篇文章里面的程序作为例子:class ... 阅读全文

posted @ 2008-10-17 19:08 lbq1221119 阅读(2574) 评论(6) 推荐(0) 编辑

Windbg在Managed App中设置函数断点的几种方法
摘要:本文介绍两种使用Windbg在Managed App中设置断点的方法。一种是在live Debug的时候,attach到了Process之后。另外一种是动态调试的时候,如何给几个模块的特定方法下一个断点。 使用Windbg在Native Code里面下断点是比较方便的,bp加上一个内存地址就可以做到。但是在托管的时候给一个方法下一个断点稍微有点麻烦。因为Windbg是一个native Debug... 阅读全文

posted @ 2008-10-17 19:05 lbq1221119 阅读(2842) 评论(6) 推荐(0) 编辑

.Net 2.0内存对象布局详析及与1.1变化比较
摘要:写本文主要两个目的,一个是解析下2.0下的对象在内存里面究尽是个什么样子的布局,使用windbg和sos来show下内存里面的bit是如何组织其来的。另外一个就是比较下和.Net Framework 1.1你面的内存布局有什么区别,修正下“Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects”里... 阅读全文

posted @ 2008-10-15 12:04 lbq1221119 阅读(3265) 评论(20) 推荐(0) 编辑

Handle table中CAS操作与A-B-A Problem解析
摘要:在研究handle table的时候顺便研究的东西。Baidu了下,发现国内这方面的资料几乎没得,然后就准备瞎bb下,为下面的一篇介绍handle table的结构做准备。关于lock-free data structure。以及解决这个问题中使用的CAS(compare and swap)操作。以及使用CAS操作的时候出现的A-B-A Problem。对于lock-free data struc... 阅读全文

posted @ 2008-08-18 14:36 lbq1221119 阅读(4779) 评论(8) 推荐(0) 编辑

Windows Process内存组织结构及重要域解析
摘要:最近恶补操作系统和一些底层的知识。遂写篇文章来说说从操作系统的角度来研究Process的一些结构,实现,Porcess的初始化,重要的结构体域的定义,代表的含义,如何组织起来的,等。还有在前段时间研究托管的static字段到底在内存中如何组织的时候,遇到的handle table不熟悉的问题。 一个xp里面的Process,是由几个Eprocess,执行体进程块来表示的。这个Eprocess里面不... 阅读全文

posted @ 2008-07-22 14:45 lbq1221119 阅读(4406) 评论(11) 推荐(1) 编辑

WinDbg+SOS:Web服务器High CPU Hang(100%)实例分析
摘要:下午,msn上面一个朋友发了一个dump文件过来,说是Web服务器的CPU使用率在100%,找不到问题在什么地方,让帮忙看看,遂让把dump文件传过来,找找问题出在哪儿。 Framework2.0,Windows 2k的OS。 加载了Dump文件之后,接着加载2.0版本的SOS扩展调试模块: .load C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\S... 阅读全文

posted @ 2008-06-17 23:36 lbq1221119 阅读(4451) 评论(25) 推荐(1) 编辑

使用DbgHelp获取函数调用堆栈之inline assembly(内联汇编)法
摘要:如果想自己获取应用程序的Call Stack,就需要查看Stack的内容。Stack Walker,在最近查看SSCLI源码的时候发现这个东西是和Stack Frame紧密联系在一起的。Walking the StackWe could conceivably attempt to unwind the stack ourselves using inline assembly. But stac... 阅读全文

posted @ 2008-04-18 14:58 lbq1221119 阅读(3873) 评论(3) 推荐(0) 编辑

Windbg+Rotor:Managed Process中的各种Special Threads分析
摘要:这几天Oracle培训,数据库功力倒是没太大长进,倒是Debug,Windows架构和实现还有CLR的觉悟突飞猛进。开篇前首先3ks下rick,他把他写的一票经典的文章都发到sscli.cnblogs.com团队里面来了。Rick可是我在看雪bbs上面久仰的大牛…由于写的文章时间在创建团队的时间之前,故需要翻到第一页才能看到rick的文章。 首先就从sscli中TLS预先定义的一个结构体说起了: ... 阅读全文

posted @ 2008-04-12 18:12 lbq1221119 阅读(3497) 评论(11) 推荐(0) 编辑

使用WinDbg+SOS及WinDbg Script寻找内存中DataTable第M行N列的值
摘要:DataTable在内存中是如何存储一张表的结构的呢?如何使用Windbg直接在内存中找到一个DataTable里面的第M列第N行的值呢?这的确是一个比较有趣的问题^_^下面的内容,主要是讲如何用windbg+sos来看看一个DataTable在内存中是如何存储的,以及寻找内存中一个DataTable特定的行列的一个单元的值是多少。同时,还有一点Windbg Script的使用。找一个小白鼠先: ... 阅读全文

posted @ 2008-03-31 22:03 lbq1221119 阅读(3512) 评论(18) 推荐(0) 编辑

WinDbg+Rotor解析WinForm调用堆栈及实现
摘要:前段写过一篇文章“CLR探索系列:深入追踪托管exe加载执行过程”,在那篇文章中,主要是侧重静态代码的分析,追踪源代码的流程一步一步看是如何实现的。这次,写一篇文章,结合Windbg,从一个托管应用程序执行的调用堆栈开始,追踪其调用堆栈中的线索,以及这些托管应用程序执行中调用的功能实现,来展示托管代码的加载和执行的流程和实现。首先还是找一个小白鼠:public partial class Form... 阅读全文

posted @ 2008-03-25 10:50 lbq1221119 阅读(3736) 评论(2) 推荐(0) 编辑

Object内存核心结构及实现完全剖析(MethodTable、EEClass与MethodDescChunk)
摘要:无疑,一个Object在CLR中的逻辑结构是相当复杂的。前段时间,写了一篇CLR探索系列:System.Object内存布局模型及实现研究,侧重从System.Object这个基本类的基本内存布局,实现和结构来研究了下。这是远远不够的。今天就从如何存储一个Object中的Field,Method等信息,这些信息的逻辑组织方式和存储的逻辑结构。废话不多说,看看就知道了:首先,给一个图: 这个图,显示... 阅读全文

posted @ 2008-03-14 19:55 lbq1221119 阅读(5343) 评论(13) 推荐(1) 编辑

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的时候,ntdll.dll好像也出现过这个问题,当时把符号文件重新加载了一次就OK了。这次看到他出现了同样的问... 阅读全文

posted @ 2008-03-13 14:00 lbq1221119 阅读(3229) 评论(1) 推荐(0) 编辑

Solution of Problems in Building sscli via Visual Studio 2008
摘要:前些天,发布了一个能够在Visual Studio2005查看sscli源代码的项目文件。不过,在VS2008中编译sscli,会出现一大堆错误。这里,有幸在Jeremy Kuhne's Blog上面找到了一篇文章来解决这个问题。原文链接可以点这里。这里,时间原因就不翻译过来了,希望对sscli团队中研究这个的同志们有帮助,特别希望“装配脑袋”能看到这篇文章。The currently avail... 阅读全文

posted @ 2008-03-13 08:37 lbq1221119 阅读(2014) 评论(4) 推荐(0) 编辑

【开源CLI核心探索团队】sscli探索团队,诚邀请您的加入
摘要:你是否真正的了解你所认识的.NET?Rotor、Mono?垃圾收集器、类装入器、类型系统、错误报告系统、应用程序域、配件、代理支持、反射、安全性和代码管理器等等等等的架构、实现。在实现这些名词中遇到的有趣的问题和睿智的解决方案。 在对新技术的追踪和应用中,国内的技术爱好者已经能基本上跟上国外同行的步伐。而对于.Net比较核心的基本技术,高级调试技术,FrameWork架构细节及其实现的研究,与国外... 阅读全文

posted @ 2008-03-10 07:43 lbq1221119 阅读(4181) 评论(90) 推荐(0) 编辑

判断GC运行模式的几种方法
摘要:上次提出了一个问题:一个托管进程,如果运行在一个双核CPU的机器上,GC是运行于Server GC模式,在假设CPU没有Hyper thread功能的话,这个托管进程会有几个GC Thread?可以用调试工具来证明你的判断吗?这个问题的答案,想必很多人也知道,几个cpu就几个GC Thread。不过接下来的内容,主要侧重于,变换几种不同的方式来解决这个问题:方法一:在WinDBG中,加载SOS模块... 阅读全文

posted @ 2008-03-09 14:39 lbq1221119 阅读(3181) 评论(18) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示