Chinaunix首页 | 论坛 | 博客
  • 博客访问: 366998
  • 博文数量: 83
  • 博客积分: 5322
  • 博客等级: 中校
  • 技术积分: 1057
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 11:27
个人简介

爱生活,爱阅读

文章分类

全部博文(83)

文章存档

2015年(1)

2013年(1)

2012年(80)

2011年(1)

分类: LINUX

2012-09-18 18:05:21

1.如何使用gdb

在编译程序的时候,你应当告诉编译器产生适合调试器的程序。调试器需要特殊的信息以保证正确地运行。你必须通过调试器标识-g来编译程序。这个步骤非常关键。没有它,调试器将无法获得程序的符号信息。也就是说,调试器无法知道程序中的函数与变量的名称。因此,当你试图让调试器输出相关信息时,它无法理解这些指令。

1.1   怎样编译出符号信息?

向编译器传递-g标记:

prompt > gcc -g program.c -o programname

注意:如果你有一个包含多个文件的大型程序,那么,每一个源文件均必须通过-g标记进行编译,且在链接的时候同样设置该标记。

1.2             如何通过调试器运行程序?

首先,将程序作为调试器的第一个参数运行。

prompt> gdb programname

其次,在gdb中,使用run启动程序的执行。并在该命令中传递参数。

(gdb) run arg1 "arg2" ...

1.3    在调试器中,如何重启程序的运行?

gdb中,使用kill命令停止程序的执行。然后,使用上面的run命令重新执行程序。

(gdb) kill

Kill the program being debugged? (y or n) y

(gdb) run ...

1.4    如何退出调试器?

使用quit命令。

(gdb) quit

注意:可能会向你询问是否终止该程序。回答是。

(gdb) quit

The program is running. Exit anyway? (y or n) y

prompt >

1.5    如何获取调试器命令的帮助?

使用帮助命令(help)。Gdb对每个支持的命令均有详细的描述,并且有很多本教程没有覆盖到的命令。帮助命令(help)的参数就是你想获取信息的命令。如果你仅仅输入“help”而没有参数,那么你将获得类似于下面的一列帮助课题:

(gdb) help

命令类列表:

aliases—命令的别名

breakpoints—使得程序在特定点停止运行

data—检查数据

files—指定与检查文件

internals—维护命令

obscure—隐晦的特征

running—运行程序

stack—检查栈

status—状态检查

support—支持功能

tracepoints—跟踪程序的执行而不需要停止程序

user-defined—用户自定义命令

输入“help”之后跟随上面的命令类别,将会输出该类别的命令列表

输入“help”之后跟随命令名称,将会获得给命令的完整文档

命令名称在无歧义的情况下,可以进行缩写

阅读(1406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~