当前位置:操作系统 > Unix/Linux >>

Linux内核调试工具:Kdb应用指南(4)

作者:胡风华

  杂项

  id:指令反汇编

  格式:id <vaddr>

  从vaddr开始的地址反汇编指令。

  cpu:切换到另一个CPU

  格式:cpu <cpunum>

  这条命令仅仅在SMP结构下有用,它切换到由cpunum指定的CPU。

  ps:显示所有活动的进程

  格式:ps

  显示当前的活动的进程。包括pid、父进程pid、CPU号、当前状态,以及对应的线程。

  reboot:重新启动机器

  格式:reboot

  在某些情况下,内核无法返回到正常工作状态,这时可以利用reboot重新启动机器。注意在重启机器前,它不进行任何状态保存的工作。

  sections:列出内核中所有已知的段的信息

  格式:sections

  列出模块和内核的所有已知的段的信息。首先是模块信息,最后是内核信息。包括模块名和一个或者多个段的信息。段信息包括段名、段起始地址、段结束地址和段标识。本命令仅仅是为外部调试器而设立的。

  sr:激活SysRq代码,也就是调用MAGIC_SYSRQ函数

  格式:sr <sysrq key>

  将sysrq key字符作为参数传递给SysRq函数进行处理,就像你已经键入了SysRq键和该字符一样。如果要使用这个命令,需要在配置内核时,选择Magic SysRq Key。然后在新内核启动后,使用如下命令激活SysRq功能。

  #echo “1” > /proc/sys/kernel/sysrq

  这是一个功能强大的命令,它使得在kdb中可以使用操作系统提供的SysRq处理函数。

  lsmod:列出内核中加载的所有模块

  格式:lsmod

  显示所有模块的信息。包括模块名、模块大小、模块结构地址、引用计数,以及被哪个模块所引用。

  rmmod:卸载一个模块

  格式:rmmod <modname>

  将由modname指定的模块从内核中卸载。

  ll:对链表中的每个元素重复执行命令

  格式:ll <addr> <link-offset> <cmd>

  它对以地址addr开头的链表的头link-offset个元素,重复执行cmd命令。

  help和?:显示帮助信息。

  格式:help 或者?

  显示kdb的命令以及简单的用法。

  提高调试效率

  kdb是一个强大的内核调试工具,gdb需要两台机器通过串口才能进行调试,而kdb只需要一台机器即可进行调试,对于普通用户来说,是非常方便的。对于编写内核程序(譬如可加载模块)的程序员来说,kdb提供的这些命令使得调试工作难度大大降低,使得调试效率得以提高。另外对于内核感兴趣的人可以使用kdb来查看内核的数据结构和运行状态,从而加深对内核的理解。不足之处是kdb无法提供源码级的调试,要求程序员有一定的汇编程序基础。但总的来说,kdb提供了一种强有力的内核调试手段,笔者在开发内核模块时,使用kdb进行调试,在较短的时间内完成了调试任务。

  

上一个:编译内核让之支持PS并口改装手
下一个:Linux内核调试工具:Kdb应用指南(3)

更多Unix/Linux疑问解答:
路由原理介绍
子网掩码快速算法
改变网络接口的速度和协商方式的工具miitool和ethtool
Loopback口的作用汇总
OSPF的童话
增强的ACL修改功能
三层交换机和路由器的比较
用三层交换机组建校园网
4到7层交换识别内容
SPARC中如何安装Linux系统(2)
SPARC中如何安装Linux系统(1)
用Swatch做Linux日志分析
实战多种Linux操作系统共存
浅析Linux系统帐户的管理和审计
Linux2.6对新型CPU的支持(2)
电脑通通透
玩转网络
IE/注册表
DOS/Win9x
Windows Xp
Windows 2000
Windows 2003
Windows Vista
Windows 2008
Windows7
Unix/Linux
苹果机Mac OS
windows8
安卓/Android
Windows10
如果你遇到操作系统难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,