红联Linux门户
Linux帮助

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

发布时间:2006-08-15 17:23:06来源:红联作者:夏雨
  作者:胡风华
  
  kdb的基本用法
  
  安装新内核后,使用新内核重新启动机器,现在,内核已经有kdb支持了。那么如何进入调试环境呢?如果在配置内核时,没有选择kdb-off by default,那么在内核启动后,按下“pause”键即可进入kdb调试环境。如果在配置内核时选择了kdb-off by default,那么有两种办法:一种是在启动时加入“kdb=on”,另一种方式是在proc文件系统加载后,输入如下命令:
  
  #echo 1”>/proc/sys/kernel/kdb。
  
  然后就可以按“pause”键进入调试环境了。按“pause”键后,出现提示符kdb>,同时键盘上Caps和Scroll两指示灯不停闪烁,提示现在处于kdb调试环境中。
  
  kdb提供丰富的命令实现运行控制、内存操纵、寄存器操纵、断点设置、堆栈跟踪等许多功能,总共有33条命令,下面分别进行介绍。
  
  运行控制类
  
  包括go、ss和ssb三个命令,提供对程序执行的控制。具体用法如下:
  
  go:继续程序执行
  
  格式:go
  
  该命令使内核继续执行,直到遇到一个断点才停止。如果没有设置断点,该命令将离开kdb调试器,系统回到正常运行状态。Caps和Scroll指示灯恢复到原来的状态。
  
  ss:单步执行程序
  
  格式:ss
  
  该命令仅仅执行下一条指令,执行完后停止。这在进行跟踪时是必不可少的。
  
  ssb:执行到分支或者函数调用时停止
  
  格式:ssb
  
  该命令与ss的区别是,ss只执行一条语句,而ssb执行一组语句,它使指令继续执行,在遇到一个分支语句,或者遇到一个函数调用语句时停止。
  
  断点类
  
  kdb提供强大的断点功能,包括设置断点、清除断点、激活断点、使断点失效,kdb也可以设置硬件断点。断点指令包括bp、bl、bpa、bph、bpha、bc、be和bd。
  
  bp:设置或者显示断点
  
  格式:bp []
  
  该命令设置一个新的断点,其中vaddr是要设置的断点的地址。如果不带参数,运行bp将显示当前设置的所有断点。
  
  bl:设置或者显示断点
  
  格式:bl []
  
  该命令的操作与bp命令相同。
  
  bpa:设置或者显示全局断点
  
  格式:bpa []
  
  该命令设置一个全局断点,或者显示所有全局断点,用法同上。
  
  bph:设置硬件断点或者显示所有断点
  
  格式:bph [vaddr [datar|dataw|io [length]]]
  
  如果不带参数,则显示所有断点。如果带参数,那么设置断点。其中vaddr为要设置硬件断点的地址,datar表示对该内存区进行读操作,dataw表示写操作,io表示对该内存区进行io输入输出操作。length指明读写io操作的数据长度。
  
  bpha:设置硬件断点或者显示所有断点
  
  格式和用法同bph。
  
  bc:清除断点
  
  格式:bc
  
  清除标号为bpnum的断点。如果断点号为“*”,将清除所有断点。
  
  bd:使断点无效
  
  格式:bd
  
  使标号为bpnum的断点无效,如果标号为“*”,表示使所有断点无效。
  
  be:激活断点
  
  格式:be
  
  激活标号为bpnum的断点。如果标号为“*”,将激活所有无效的断点。
  
  内存操作类
  
  内存操作类命令包括对内存进行显示和修改的md、mdr、mds、mm四条命令。
  
  md:显示内存内容
  
  格式1:md [vaddr [line-count [output-radix]] ]
  
  显示地址为vaddr的内存的内容。line-count为要显示的内存的行数,output-radix指定以8进制、10进制或者16进制显示。如果省略line-count和output-radix,那么将以设置的环境变量MDCOUNT和RADIX方式显示。如果不带任何参数,md命令将接着上次md命令的后续地址显示内存内容
文章评论

共有 0 条评论