kdb的基本用法 2
该文章转载自: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相关推荐
- KDB内核调试 - 1
KDB内核调试 - 1 1 下载linux内核源码和补丁 首先kdb不是Linux内核的标准配置,需要先到这个网站上去下载补丁 ftp://oss.sgi.com/www/projects/kdb/d ...
- kdb内核调试 - 3
KDB内核调试 - 3 kdb的基本用法 安装新内核后,使用新内核重新启动机器,现在,内核已经有kdb支持了.那么如何进入调试环境呢?如果在配置内核 时,没有选择kdb-off by default, ...
- kdb 使用手册指导 1
首先kdb不是Linux内核的标准配置,需要先到这个网站上去下载补丁 ftp://oss.sgi.com/www/projects/kdb/download/v4.4/ 以2.6.28为例,下载 kd ...
- kdb内核调试 - 5
KDB内核调试 - 5 id:指令反汇编 格式:id <vaddr> 从vaddr开始的地址反汇编指令. cpu:切换到另一个CPU 格式:cpu <cpunum> 这条命令仅 ...
- makefile/make用法
陈皓 (CSDN) 概述 -- 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都 为你做了这个工作,但我觉得要作一个好的和 profession ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
最新文章
- VC++中进程间相互通信的十一种方法
- 【Java代码】Lamda表达式将List对象中的Map对象的key全部转化为大写或者小写【去除外层循环:可用于Map对象中的key全部转化为大写或者小写】
- neo4j 迁移_在Kubernetes中迁移Neo4j图模式
- linux查看pid 对应的程序_资深程序员总结:分析 Linux 进程的 6 个方法,我全都告诉你...
- 禁止IE页面自动跳转到EDGE浏览器的方法教程
- 产品经理基本功:消息推送设计
- [Python]集合的交集,并集,差集
- 今天来了一位妹纸面试,我问她:线程池中多余的线程是如何回收的?她有点懵~...
- UML的简单介绍和画法
- Apabi Reader-强大的免费pdf文档阅读器(方正出品)
- 【项目|ICT】决赛记录
- easyui设置html样式,easyui checkbox
- python可不可以开发软件_python可以开发软件吗
- 局域网ip扫描工具_IP Scanner Pro for mac(局域网IP扫描软件)
- xgboost 怎么读_你真的会读书了吗?五本书让你会读书,读好书,好读书!
- MySQL备份工具之xtrabackup
- MySQL必做练习题33道(员工信息,工资等级,部门信息)
- 火星人怒批古董微积分,误人子弟
- 【配置】GitHub Pages使用阿里云域名
- 哈尔滨新发屯双星计算机学院,家校合作,助力成长——计算机与信息工程学院召开2019级新生家长见面会...
热门文章
- Google colab下载文件夹(打包文件下载)
- php 利用phpmailer 发送邮件
- 数据结构与算法详细解析之双链表结构解析
- 44.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和
- Could not find messages which '/home/flying/catkin_ws/src/beginner_tutorials/msg/Num.msg' depends
- 超级计算机图像处理云桌面,图形工作站高性能云桌面解决方案
- 使用Springboot StringRedisTemplate 在单位时间内对发送手机号验证码次数做限制,半小时最多发送5次验证码
- 炒股的智慧-三则小故事
- 营销策划书(2007)
- PAT5-06. 航空公司VIP客户查询