Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369563
  • 博文数量: 102
  • 博客积分: 2070
  • 博客等级: 大尉
  • 技术积分: 1019
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-14 11:07
文章存档

2011年(1)

2010年(34)

2009年(37)

2008年(30)

我的朋友

分类: LINUX

2008-08-05 15:17:39


                                        gdb命令手册
GDB 的命令很多,本文不会全部介绍,仅会介绍一些最常用的。在介绍之前,先介绍GDB中的一个非常有用的功能:补齐功能。它就如同Linux下SHELL中的命令补齐一样。当你输入一个命令的前几个字符,然后输入TAB键,如果没有其它命令的前几个字符与此相同,SHELL将补齐此命令。如果有其它命令的前几个字符与此相同,你会听到一声警告声,再输入TAB键,SHELL将所有前几个字符与此相同的命令全部列出。而GDB中的补齐功能不仅能补齐GDB命令,而且能补齐参数。

本文将先介绍常用的命令,然后结合一个具体的例子来演示如何实际使用这些命令。下面的所有命令除了第一条启动GDB命令是在SHELL下输入的,其余都是GDB内的命令。大部分GDB内的命令都可以仅输入前几个字符,只要不与其它指令冲突。如quit可以简写为q,因为以q打头的命令只有quit。 List可以简写为l,等等。

1.启动GDB

你可以输入GDB来启动GDB程序。GDB 程序有许多参数,在此没有必要详细介绍,但一个最为常用的还是要介绍的:如果你已经编译好一个程序,我们假设文件名为hello,你想用GDB调试它,可以输入gdb hello来启动GDB并载入你的程序。如果你仅仅启动了GDB,你必须在启动后,在GDB中再载入你的程序。

2.载入程序 === file

在GDB内,载入程序很简单,使用file命令。如file hello。当然,程序的路径名要正确。

退出GDB === quit

在GDB的命令方式下,输入quit,你就可以退出GDB。你也可以输入'C-d'来退出GDB。

3.运行程序 === run

当你在GDB中已将要调试的程序载入后,你可以用run命令来执行。如果你的程序需要参数,你可以在run指令后接着输入参数,就象你在SHELL下执行一个需要参数的命令一样。

4.查看程序信息 === info

info指令用来查看程序的信息,当你用help info查看帮助的话,info指令的参数足足占了两个屏幕,它的参数非常多,但大部分不常用。我用info指令最多的是用它来查看断点信息。

4.1 查看断点信息

info br

br是断点break的缩写,记得GDB的补齐功能吧。用这条指令,你可以得到你所设置的所有断点的详细信息。包括断点号,类型,状态,内存地址,断点在源程序中的位置等。

4.2 查看当前源程序

info source

4.3 查看堆栈信息

info stack

用这条指令你可以看清楚程序的调用层次关系。

4.4 查看当前的参数

info args

4.5 传递参数
run [arglist]  或者  set args [arglist]

5.列出源一段源程序 === list

5.1 列出某个函数

list FUNCTION

6. 给变量赋值  === set

6.1 set variable 变量=值

7. 使中断失效或有效 === disable /  enable

7.1 disable 断点编号   可以使某个断点失效  如diable main 可使break main 命令失效

7.2 enable 断点编号    可以使某个断点恢复有效       

8. 删除断点  ===clean / delete

disable只是让某个断点暂时失效,断点依然存在于程序中.如果要彻底删除某个断点,可以使用clear
或delete命令.

8.1 clear: 删除程序中所有的断点.

8.2 clear 行号: 删除此行的断点.

8.3 clear 函数名: 删除该函数的断点.

8.4 delete 断点编号: 删除指定编号的断点.如果一次要删除多个断点,各个断点编号以空格隔开.
阅读(2525) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-10-09 16:33:16

学习了~~~

chinaunix网友2008-09-28 21:29:54

对我的帮助比较大,很好

huxuelin19892008-08-30 20:13:46

好 全面

金口袋2008-08-11 10:30:41

比我写的详细,看来我要补充一下我自己的了。