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

set tmp=10

 

3.11 检查内存值

检查内存值的指令是x,x是examine的意思。用法如下:

x /NFU ADDR

其中N代表重复数,F代表输出格式(见2.13),U代表每个数据单位的大小。U可以去如下值:

b :字节(byte)

h :双字节数值

w :四字节数值

g :八字节数值

因此,上面的指令可以这样解释:从ADDR地址开始,以F格式显示N个U数值。例如:

x/4ub 0x4000

会以无符号十进制整数格式(u)显示四个字节(b),0x4000,0x4001,0x4002,0x4003。

 

3.12 输出格式

缺省情况下,输出格式依赖于它的数据类型。但你可以改变输出格式。当你使用print命令时,可以用一个参数/F来选择输出的打印格式。F可以是以下的一些值:

'x' 16进制整数格式

'd' 有符号十进制整数格式

'u' 无符号十进制整数格式

'f' 浮点数格式

 

3.13 单步执行指令

单步执行指令有两个step和next。Step可以让你跟踪进入一个函数,而next指令则不会进入函数。

 

3.14 继续执行指令

当程序被断下后,你查看了所需的信息后,你会希望程序执行下去,输入 continue, 程序会继续执行下去。

 

3.15 帮助指令help

在GDB中,如果想知道一条指令的用法,最方便的方法是使用help。使用方法很简单,在help后跟上指令名。例如,想知道list指令用法,输入

help list

 

4.一个简单的例子

上面仅是GDB常用指令的简单介绍。本节将结合一个简单的例子,向大家演示这些常用指令的具体应用。这是一个冒泡排序算法的程序,这个例子的目的仅仅是演示,并不是实际调试。将下面的源程序存为bubble.c文件,并编译好。

 

 

#include <stdio.h> 
#define MAX_RECORD_NUMBER 10 

int record[MAX_RECORD_NUMBER] =
{12,76,48,62,94,17,37,52,69,32}; 

swap(int * x , int * y )
{
int temp;
temp = *x;
*x = *y;
*y = temp;
} 

int main()
{
int i,j;
for( i = 0 ; i < MAX_RECORD_NUMBER - 1; i++ )
{
for( j = MAX_RECORD_NUMBER - 1; j > i; j--)
if( record[j] < record[j-1] )
swap(&record[j],&record[j-1]);
} 

for( i = 0; i < MAX_RECORD_NUMBER -1; i++)
printf("%d ",record[i]); 

printf("\n");
return 1;
}

记得在编译时用-g开关。如:gcc -g -o bubble bubble.c。你能在当前子目录下得到一个编译好的文件bubble。我们下面将以这个程序为例子向大家演示上面的指令在实际中的应用。

首先启动GDB,可以在启动的同时载入文件bubble,如:gdb bubble。也可以分两步进行,先启动GDB,执行gdb,进入GDB后,再执行file bubble。

 

这时可以用list指令列出源程序,list的使用比较简单,但其实在GDB中最不方便的就是看源程序,主要原因是因为GDB仅是一个文本方式的调试器,无法让你用鼠标和光标键来翻阅源程序,在这方面ddd等窗口程序有巨大的优势。

我们先来查看一下当前源程序的信息,如下:

 

 

(gdb) info source
Current source file is bubble.c
Compilation directory is /root/sample/
Located in /root/sample/bubble.c
Contains 32 lines.
Source language is c.
Compiled with stabs debugging format.

我们可以知道程序名,目录,文件大小,语言等信息。

下面我们来设置断点,我们想在函数swap出设置一个断点:

(gdb) br swap

Breakpoint 1 at 0x80483d6: file bubble.c, line 11.

br是break的简写。上面的一行是GDB告诉我们这个断点的信息,我们可以知道这个断点的断点号是1,地址是0x80483d6,它在文件bubble.c的11行。

共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
转载本站内容请注明原作者名.谢谢!