您的位置:首页 > 其它

使用GDB进行调试

2012-07-19 00:04 309 查看
使用GDB调试C程序

GDB是GNU开源组织发布的一个非图形化的Unix下的程序调试软件。

它能使用户在程序运行时观察数据的内部结构和内存使用情况。

GDB提供的主要功能:

1)监视程序中的变量值

2)设置断点,使程序在指定代码行停止。

3)单步执行

4)动态改变程序的执行环境



一、调试一个简单的程序

1、编写主程序test.c

#include <stdio.h>

int main(int argc, char *argv[])
{
        int i=0;
        for(i; i<10; i++)
        {
                printf("%d\n", i);
        }

        return 0;
}


2、编译程序为可执行文件test

$ gcc test.c -g -o test

为了使用GDB进行调试,必须加上-g选项,这样可以使程序在编译时包含调试信息。

3、载入test可执行文件,启动GDB调试

$ gdb test



看到上面类似效果,说明GDB成功载入了test可执行文件

4、现在,可以对程序进行一系列的调试了

调试时,常用的命令有:

file:装载要调试的可执行文件

kill:终止正在调试的程序

list:列出源码

run:执行程序

break:设置断点

watch:动态观察某个变量

next:执行下一行

quit:退出GDB

make:不退出GDB,而重新生成可执行文件

call name(args):调用并执行name,参数为args的函数

return value:停止当前函数,并返回设定的value给调用者

a、列出源码

(gdb) list



b、执行程序

(gdb) run



c、设置断点,并重新执行可执行文件

(gdb) break 6

(gdb) run



可以看到,程序在第6行被挂起了

d、单步执行

(gdb) n

(gdb) n

(gdb) n

(gdb) n

(gdb) n

(gdb) n



可以看到,程序在6-8行之间重复执行

e、监控变量i

(gdb) watch i

(gdb) n



Hardware watchpoint 2:i,表示这是第二个监控点,变量为i

Old value、New value能让你看到变量的变化情况

f、输出变量的值

(gdb) print i



$2,表示第二个监控变量,此处表示变量i,当前值为3

更多关于GDB,可以参看百度百科 http://baike.baidu.com/view/639266.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: