爱生活,爱阅读
分类: LINUX
2012-09-18 18:05:21
在编译程序的时候,你应当告诉编译器产生适合调试器的程序。调试器需要特殊的信息以保证正确地运行。你必须通过调试器标识-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”之后跟随命令名称,将会获得给命令的完整文档
命令名称在无歧义的情况下,可以进行缩写