首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 基础>文章内容
调试工具GDB基本知识全接触
来源:http://www.unix5.com 作者:riechelr_hl 发布时间:2007-06-26  

我们再在一个行号上设一个断点,

(gdb) br 23

Breakpoint 2 at 0x804844a: file bubble.c, line 23.

我们已经设了两个断点,许多时候你会想查看一下断点的信息和状态,因此你会用到你最常使用的info指令,info br。

(gdb) info br

Num Type Disp Enb Address What

1 breakpoint keep y 0x080483d6 in swap at bubble.c:11

2 breakpoint keep y 0x0804844a in main at bubble.c:23

我用这条指令的大多数原因是想查看一下某个断点的断点号,就是第一列的数值。有时也会看一下断点的状态是enable还是disable。以上的两个断点都是y,也就是都处于enable状态。type列显示breakpoint,是因为info br指令同时也会显示watch的信息,因此用type来识别是断点breakpoint还是检查点watch。

如果你知道断点号,想删除断点很简单,例如想删除断点2,执行del 2就行了。

在程序中,断点2本来设在循环中,那样程序会频烦断下,这也许不是我们希望的。也许我们仅想在某个条件下让它断下,如想当j=5时。

 

 

(gdb) br 23 if j==5
Breakpoint 3 at 0x804844a: file bubble.c, line 23.
(gdb) info br
Num Type Disp Enb Address What
1 breakpoint keep y 0x080483d6 in swap at bubble.c:11
3 breakpoint keep y 0x0804844a in main at bubble.c:23
stop only if j == 5

 

注意现在的断点信息,虽然断点2被删除了,但新设的断点号没有使用2号,而是使用了3号。新设的断点是个条件断点,这从"stop only if j == 5"可以清楚的看出。

现在执行程序,输入run指令。

 

 

(gdb) run
Starting program: /root/sample/bubble 

Breakpoint 1, swap (x=0x80495a4, y=0x80495a0) at bubble.c:11
11 temp = *x;

程序已经在断点1停了下来。当断点停下时,我们经常需要查看变量值。如查看x值。

(gdb) p x

$1 = (int *) 0x80495a4

GDB告诉我们x是一个指向整数的指针,指针值是0x80495a4。如果想查看指针指向的值。执行:

(gdb) p *x

$2 = 32

(gdb) p *y

$3 = 69

单步执行

(gdb) n

12 *x = *y;

查看变量temp值

(gdb) p temp

$4 = 32

(gdb) n

13 *y = temp;

(gdb) p *x

$5 = 69

现在删除断点1

(gdb) del 1

继续执行

(gdb) cont

Continuing.

 

Breakpoint 3, main () at bubble.c:23

23 swap(&record[j],&record[j-1]);

程序在断点3停下,记得断点3是个条件断点。要验证很简单,查看一下变量j的值是不是5。

(gdb) p j

$6 = 5

我们可以查看一下全局变量record的值,

(gdb) p record

$7 = {12, 76, 48, 62, 94, 17, 32, 37, 52, 69}

也可以查看一下变量record的地址,

(gdb) p &record

$8 = (int (*)[10]) 0x8049580

知道地址时,也可以x指令查看内存值。

(gdb) x/4uw 0x8049580

0x8049580 : 12 76 48 62

上面的指令查看4个4字节数,以整数方式显示。可以看到这与reocrd值是相附的。

(gdb) x/4bb record

0x8049580

共5页: 上一页 [1] [2] [3] 4 [5] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·linux下bash入门基础
·Linux操作系统里Configure参数讲
·Linux操作系统下硬盘分区的最佳
·新手入门 Linux菜鸟必学的60个命
·新手学堂:学习Linux系统的十一
·新手必学 Linux常见系统调用列表
·初学者该如何熟悉 Linux 内存管
·新手入门:怎么样掌握Linux系统
·unix入门材料(3),(4)
·VMware下Linux系统的安装及简单
·怎么样设置UNIX/LINUX中的文件及
·Linux教程 使用Ghost对Linux进行
  相关文章
·Linux系统上安装和配置网络设备
·安装Linux显卡驱动,领略Xwindow
·Linux下IDE CD-RW光盘刻录机安装
·新手学堂:学习Linux系统的十一
·Linux操作系统下硬盘分区的最佳
·新手入门:怎么样掌握Linux系统
·Linux操作系统里Configure参数讲
·Mount命令:Linux外置存储介质挂
·Linux下安装JDK与VI编辑器的基本
·VMware下Linux系统的安装及简单
·Linu系统管理 新手要了解的十个
·Bash中对变量的操作应用

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!