该文章转载自:http://blog.csdn.net/cybertan/article/details/6574024

  安装新内核后,使用新内核重新启动机器,现在,内核已经有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命令的后续地址显示内存内容

kdb的基本用法 2相关推荐

  1. KDB内核调试 - 1

    KDB内核调试 - 1 1 下载linux内核源码和补丁 首先kdb不是Linux内核的标准配置,需要先到这个网站上去下载补丁 ftp://oss.sgi.com/www/projects/kdb/d ...

  2. kdb内核调试 - 3

    KDB内核调试 - 3 kdb的基本用法 安装新内核后,使用新内核重新启动机器,现在,内核已经有kdb支持了.那么如何进入调试环境呢?如果在配置内核 时,没有选择kdb-off by default, ...

  3. kdb 使用手册指导 1

    首先kdb不是Linux内核的标准配置,需要先到这个网站上去下载补丁 ftp://oss.sgi.com/www/projects/kdb/download/v4.4/ 以2.6.28为例,下载 kd ...

  4. kdb内核调试 - 5

    KDB内核调试 - 5 id:指令反汇编 格式:id <vaddr> 从vaddr开始的地址反汇编指令. cpu:切换到另一个CPU 格式:cpu <cpunum> 这条命令仅 ...

  5. makefile/make用法

    陈皓 (CSDN) 概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 profession ...

  6. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  7. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

  8. Python中yield和yield from的用法

    yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...

  9. pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法

    squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...

最新文章

  1. VC++中进程间相互通信的十一种方法
  2. 【Java代码】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写【去除外层循环:可用于Map对象中的key全部转化为大写或者小写】
  3. neo4j 迁移_在Kubernetes中迁移Neo4j图模式
  4. linux查看pid 对应的程序_资深程序员总结:分析 Linux 进程的 6 个方法,我全都告诉你...
  5. 禁止IE页面自动跳转到EDGE浏览器的方法教程
  6. 产品经理基本功:消息推送设计
  7. [Python]集合的交集,并集,差集
  8. 今天来了一位妹纸面试,我问她:线程池中多余的线程是如何回收的?她有点懵~...
  9. UML的简单介绍和画法
  10. Apabi Reader-强大的免费pdf文档阅读器(方正出品)
  11. 【项目|ICT】决赛记录
  12. easyui设置html样式,easyui checkbox
  13. python可不可以开发软件_python可以开发软件吗
  14. 局域网ip扫描工具_IP Scanner Pro for mac(局域网IP扫描软件)
  15. xgboost 怎么读_你真的会读书了吗?五本书让你会读书,读好书,好读书!
  16. MySQL备份工具之xtrabackup
  17. MySQL必做练习题33道(员工信息,工资等级,部门信息)
  18. 火星人怒批古董微积分,误人子弟
  19. 【配置】GitHub Pages使用阿里云域名
  20. 哈尔滨新发屯双星计算机学院,家校合作,助力成长——计算机与信息工程学院召开2019级新生家长见面会...

热门文章

  1. Google colab下载文件夹(打包文件下载)
  2. php 利用phpmailer 发送邮件
  3. 数据结构与算法详细解析之双链表结构解析
  4. 44.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和
  5. Could not find messages which '/home/flying/catkin_ws/src/beginner_tutorials/msg/Num.msg' depends
  6. 超级计算机图像处理云桌面,图形工作站高性能云桌面解决方案
  7. 使用Springboot StringRedisTemplate 在单位时间内对发送手机号验证码次数做限制,半小时最多发送5次验证码
  8. 炒股的智慧-三则小故事
  9. 营销策划书(2007)
  10. PAT5-06. 航空公司VIP客户查询