当前最愤恨的就是网上太少又关于kdb的文章,有很多误导,即使有大都很难按照步骤成功运行。 笔者通过大量的实践和对kdb的使用经验,愿意把详细的步骤写出来与大家分享。
步骤1: kdb不是Linux内核的标准配置,需要先到这个网站上去下载一个版本,2个文件 kdb-v4.4-2.6.15-common-1(kdb-v4.4-2.6.15-common-1.bz2) 步骤2: 下载一个纯的linux内核源码文件。 记住,一定要是纯的linux内核源码,不能是什么redhat等等公司出的版本。否则在pacth时就会出现error了。 比如有一次我把patch打到了/usr/src/redhat/BUILD/kernel-2.6.15/linux-2.6.15.i686里就发生了错误,这个目录是redhat自己改过的源码,不是纯的源码,所以出错。 下载到的源码必须和步骤1的小版本一致。比如我的纯linux内核版本是2.6.15-1***。 把linux纯内核源码文件命名为linux,放到/usr/src中。 步骤3: 把步骤1得到的解压后的2个文件kdb-v4.4-2.6.15-common-1,kdb-v4.4-2.6.15-i386-1放到/usr/src/linux目录里。 这时就会很顺利的patch成功,只要不出现什么reject这样的提示就算成功。 一旦发现出现了reject这样的信息,只有2种可能: 一是你的内核不是真正的内核,是公司改进过的内核;二是kdb版本和源码版本不一致。 步骤4: 该linux配置,在这里千万不要用make menuconfig这样的命令,你可能很奇怪,为什么?我的经验表明,不同的linux/kdb版本menuconfig出来的kdb选项有很大的不同,用语言是无法准确描述,我原来参考很多网上的资料都是根据menuconfig来,造成了描述矛盾,很难搞明白。在这里,我们直接改写文件最为牢靠。 先运行make menuconfig这个命令,不更改任何选项,直接回车,然后选择yes,这样就能生成一个隐藏的文件.config了。 用vi/vim 打开这个文件, 改写如下: 保存。记住,这样做比在menuconfig菜单选项里选择要安全和清晰的多。 打开kdb/kdb_cmds这个文件,全部注释掉所有:例如: # Initial commands for kdb, alter to suit your needs. # Standard debugging information for first level support, just type archkdb defcmd archkdb "" "First line arch debugging" defcmd archkdbcpu "" "archkdb with only tasks on cpus" defcmd archkdbshort "" "archkdb with less detailed backtrace" 为什呢,因为大家刚开始接触kdb时,非常不熟悉,如果把全部选项都注释后,kdb就变的比较容易操作,否则重启系统以后,你还以为安装出错呢,不信可以试试,呵呵。等你水平高了以后,在改过来,重新编译系统就可以了。 步骤5: 改写Makefile文件中的EXTRAVERSION,随便取个名字吧。 有文章说要改写什么lilo文件。 不用改写什么lilo文件,你的系统如果只支持grub,你根本在系统里找不到lilo,改什么改!!! 步骤6: 重启,在系统选项里选择这个新的系统就可以了。 在系统开始引导时,你会在屏幕上看到3-5行关于kdb的信息,其实就是kdb_cmds里的配置,我们已经注释掉了,所以光显示,不会运行(这样最安全,否则如果你对kdb不熟,改kdb_cmds错了,在启动时就会出现什么内核panic的恐怖信息,这就是总是不能启动成功的原因)。 看到其他的启动跟没安装kdb时一样,成功进入提示你输入用户名,密码进入系统时,就表明你的kdb才真正的安装成功了。 启动kdb。 用root权限进入系统。 # echo "1" > /proc/sys/kernel/kdb 回车以后没什么反映,说明启动成功了。 我有个同事运行这个命令以后,提示找不到kdb这个文件,后来我给他调试时发现kdb根本就没安装成功,最后我给他重新安装就没问题了。 按“Pause Break”键,就会出现kdb的使用接口了。如果想退出,就输入go,然后按回车即可。我后来发现通过f1进入系统后,输入go+回车后 怎么也退不出来,在f2进入系统后,输入go+回车后就很顺利的退出了,这个现象非常奇怪,我猜可能跟linux本身有关系。 使用kdb。 谁说kdb不能源码级调试,那时他没真正用过kdb. 其实kdb是可以源码级调试的,在这里的前提是对源码级调试的定义,反正你使用kdb用单步跟踪时是可以看到源码也一行一行的自动走的,对 你怀疑有bug的地方进行查看,非常方便。 关于使用kdb谁说都没用,关键看文档,记住不要看其他任何第三方的文档(有很多误导),就看上面你的Documentation/kdb里的slides等文档,这才是最没有污染和最正宗的文档。 |
-
|
kdb编译,安装,使用完全手册
最新推荐文章于 2023-07-19 00:01:57 发布