下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验3-3 GDB/Debugger调试工具使用【实验目的】掌握Bootloader的下载过程.掌握Linux内核的下载过程.【实验步骤】第一步:在GDBC具的使用中,我们将结合一个简单的例子,解释这些常用指令的具体应用。这是一个冒泡排序算法的程序,这个例子的目的仅仅是演示说明,并非实际程序代码的调试。将下面的源程序存为bubble.c文件,并编译好。#include #define MAX_RECORD_NUMBER 10int recordMAX_RECORD_NUMBER =12,76,48,62,94,17,37,52,69,32;void swap(int * x , int * y
2、 ) int temp;temp = *x;*x = *y;*y = temp;int main()int i,j;for( i = 0 ; i i; j-) if( recordj recordj-1)swap(&recordj,&recordj-1);for( i = 0; i MAX_RECORD_NUMBER -1; i+)printf(%d ,recordi);printf(n);return 1; 第二步:编译源程序,如:gcc -g -o bubble bubble.c 。你能在当前子目录下得到一个编译好的文件bubble。我们下面将以这个程序为例子向大家演示上面的指令在实际中的
3、应用。第三步:首先启动GDB可以在启动的同时载入文件bubble。如:gdb bubble。也可以分两步进行,先启动 GDB执行gdb,进入GDB后,再执行file bubble 。第四步:这时可以用list指令列出源程序,list的使用比较简单(要看完成全部的程序,需要多输入几次list ,因为list每次显示的行数是10行),但其实在 GDB中最不方 便的就是看源程序,主要原因是因为GDBZ是一个文本方式的调试器,无法使用鼠标和 光标键来翻阅源程序,在这方面 ddd等窗口程序有巨大的优势。我们先来查看一下当前源程序的信息,如下:(gdb) info sourceCurrent source
4、 file is bubble.cCompilation directory is /root/sampleLocated in /root/sample/bubble.cContains 32 lines.Source language is c.Compiled with DWARF 2 debugging format.Does not include preprocessor macro info.我们可以知道程序名,目录,文件大小,语言等信息。第五步:设置断点,我们想在函数swap出设置一个断点:(gdb) br swapBreakpoint 1 at 0 x80483d6: fil
5、e bubble.c, line 11.br是break的简写。上面的一行是GDB告诉我们这个断点的信息,我们可以知道这个断点的断点号是 1,地址是0 x80483d6,它在文件 bubble.c 的11行。第六步:再在一个行号上设一个断点,(gdb) br 23Breakpoint 2 at 0 x804844a: file bubble.c, line 23.第七步:我们已经设了两个断点,许多时候你会想查看一下断点的信息和状态,因此你会用到你最常使用的info指令,info br 。(gdb) info brNumTypeJDisp Enb Address What1 breakpoint
6、keep y 0 x0804832e in swap at bubble.c:112 breakpointkeep y 0 x08048390 in main at bubble.c:23我用这条指令的大多数原因是想查看一下某个断点的断点号,就是第一列的数值。有时也会看一下断点的状态是enable还是disable 。以上的两个断点都是y,也就是都处于enable状态。type列显示breakpoint ,是因为info br 指令同时也会显示 watch的信息, 因此用type来识别是断点breakpoint还是检查点watch。第八步:如果你知道断点号,想删除断点很简单,例如想删除断点2,
7、执行del 2就行了。在程序中,断点2本来设在循环中,那样程序会频繁断下,这也许不是我们希望的。也许我们仅想在某个条件下让它断下,如想当 j=5时。(gdb) del 2(gdb) info brNum Type Disp Enb Address What1 breakpoint keep y 0 x0804832e in swap at bubble.c:11 (gdb) br 23 if j=5Breakpoint 3 at 0 x8048390: file bubble.c, line 23. (gdb) info br Num Type Disp Enb Address What 1
8、breakpoint keep y 0 x0804832e in swap at bubble.c:11 3 breakpoint keep y 0 x08048390 in main at bubble.c:23 stop only if j = 5注意现在的断点信息,虽然断点2被删除了,但新设的断点号没有使用2号,而是使用了 3号。新设的断点是个条件断点,这从 stop only if j = 5可以清楚的看出。第九步:现在执行程序,输入run指令。(gdb) runStarting program: /root/sample/bubbleBreakpoint 1, swap (x=0 x
9、8049524, y=0 x8049520) at bubble.c:11 11 temp = *x;第T卜步:程序已经在断点1停了卜来。当断点停下时,我们经常需要查看变量值。如查看x值。(gdb) p x$1 = (int *) 0 x8049524第T一步:GD的诉我们x是一个指向整数的指针,指针值是0 x80495a4。如果想查看指针指向的值。执行:(gdb) p *x $2 = 32 (gdb) p *y $3 = 69第十二步:然后,单步执行(gdb) n12 *x = *y;第卜二步:查看变重temp值(gdb) p temp $4 = 32 (gdb) n13 *y = temp
10、;(gdb) p *x $5 = 69第十四步:现在删除断点1(gdb) del 1第十五步:继续执行(gdb) contContinuing.Breakpoint 3, main () at bubble.c:2323swap(&recordj,&recordj-1);第d六步: 程序在断点3伊下,记得断点3是个条件断点。要验证很简单,查看一下变量 j的值是不是5。(gdb) p j $6 = 5第卜七步:我们可以查看下全局变重record的值,(gdb) p record$7 = 12, 76, 48, 62, 94, 17, 32, 37, 52, 69第八步:也可以查看卜艾重 reco
11、rd的地址,(gdb) p &record$8 = (int (*)10) 0 x8049500第十九步: 知道地址时,也可以 x指令查看内存值。(gdb) x/4uw 0 x80495000 x8049500 : 12764862第二十步:上面的指令查看 4个4字节数,以整数方式显示。可以看到这与reocrd值是相附的。(gdb) x/4bb record0 x8049500 :12000显示4个单字节数,以字节当时显示。上面的4个字节值正好是record数组第一个整数值,因为整数是 4字节,而且intel机器的数值是低字节在前。第二十一步:改变变量值也很简单,如果想将reocrd数组第一个值改为1,(gdb) set record0=1第二十二步:看一下值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育课堂中2025年小学生运动技能评价标准知识点试题
- 内外部因素对销售预测的影响
- 2026广东阳江市阳西县残疾人康复中心就业见习岗位信息招聘1人备考题库及答案详解(夺冠)
- 2026北京航空航天大学电子信息工程学院聘用编软件工程师F岗招聘3人备考题库含答案详解(基础题)
- 2026甘肃省药品安全调查中心招聘1人备考题库及答案详解参考
- 2026吉林大学白求恩第一医院病人服务中心陪检员招聘备考题库含答案详解(预热题)
- 2026安徽滁州全椒县县属国有公司招聘47人备考题库完整答案详解
- 2026福建福州仓山产投集团下属福州仓山城市智能科技发展有限公司招聘1人备考题库附答案详解(综合题)
- 2026上半年山东大学(威海)后勤管理处非事业编制岗位招聘1人备考题库及答案详解(易错题)
- 2026辽宁丹东凤城市中心医院招聘卫生专业技术人员7人备考题库(二)附答案详解(模拟题)
- 招投标挂靠合同范本
- DL∕T 523-2017 化学清洗缓蚀剂应用性能评价指标及试验方法
- HJ 651-2013 矿山生态环境保护与恢复治理技术规范(试行)
- 《数字道路路侧毫米波雷达技术要求》(征求意见稿)
- 《剧院魅影:25周年纪念演出》完整中英文对照剧本
- 人教版初中英语七至九年级单词汇总表(七年级至九年级全5册)
- 青岛科技大学2023年综合评价招生考试诚信承诺书
- 辉瑞标准销售模式
- 练好字控笔线条训练字帖
- 地铁行车调度应急指挥
- 2023年不动产登记代理人《不动产登记法律制度政策》考试题库(浓缩500题)
评论
0/150
提交评论