![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核调试器kdb代码分析
文章平均质量分 81
fudan_abc
这个作者很懒,什么都没留下…
展开
-
kdb代码分析(一)
这是一个很冷门的话题,它受关注的程度永远也比不上陈冠希老师的摄影作品.不过人在江湖身不由己,因为工作原因我不得不接触它,不得不了解一点kdb的代码.Kdb,也叫kernel debugger.是Linux系统的内核调试器,它是一个开源工具,乃是SGI公司开发的.kdb适用于调试内核空间的程序代码,譬如进行设备驱动程序调试,内核模块的调试.Official的Linux kernel并不包含kdb原创 2008-02-26 21:07:00 · 12777 阅读 · 5 评论 -
kdb代码分析(二)
来看另一个函数kdb_init(),显然这个函数就是整个kdb的入口,或者说初始化函数. 12393 + 12394 +/* 12395 + * kdb_init 12396 + * 12397 + * Initialize the kernel debugger environment. 12398 + * 12399 + * Parameters:原创 2008-02-27 20:28:00 · 6994 阅读 · 0 评论 -
kdb代码分析(三)
Linux中有些模块,你看明白它怎么初始化的你基本上就能明白它是怎么工作了,比如usb-storage,以及usb hub driver,但有些模块就没有这么简单了,就比如uhci/ehci,就比如kdb.初始化完了之后故事才刚刚拉开帷幕,如果拿近期百家讲坛热播的纪连海老师讲的李连英的故事对比,那么现在也就相当于李连英公公刚刚进宫,刚刚开始他那伟大的太监生涯.像usb-storage那样的模块原创 2008-02-28 20:26:00 · 6065 阅读 · 0 评论 -
kdb代码分析(四)
先来看KDB_ENTER().这是与体系结构相关的宏.对于i386来说,我们得看i386特定的patch(即kdb-v4.4-2.6.22-i386-1): 14434 Index: linux/include/asm-i386/kdb.h 14435 =================================================================原创 2008-03-03 14:20:00 · 4469 阅读 · 0 评论 -
kdb代码分析(七)
在大家都进入了kdb之后,in control的那个cpu就开始执行1566行的kdb_local()函数了.依然定义于kdb/kdbmain.c: 1134 /* 1135 * kdb_local 1136 * 1137 * The main code for kdb. This routine is invoked on a specifi原创 2008-03-04 11:08:00 · 9592 阅读 · 2 评论 -
kdb代码分析(五)
于是我们还是直接来看kdb()吧.这个函数有多长?说出来吓死你,近500行,光注释就有一两百行.写代码的估计一边写着,一边心里嘀咕着:XP不发威,你当我是DOS啊! 1615 /* 1616 * kdb 1617 * 1618 * This function is the entry point for the kernel debugger.原创 2008-03-03 21:32:00 · 4959 阅读 · 0 评论 -
kdb代码分析(六)
我们带着这个参数回到kdb()里面去看,我们会发现,各cpu都会跳到kdba_main_loop()去.这个函数定义于arch/i386/kdb/kdbasupport.c 577 /* 578 * kdba_main_loop 579 * 580 * Do any architecture specific set up before原创 2008-03-03 21:41:00 · 4274 阅读 · 0 评论