学习记录-linux下GDB的简单使用

操作系统:fedora9

工具链:gcc-4.4.3

调试工具:GDB

新建一个源文件:gdb_test.c

</pre><pre name="code" class="cpp">#include <stdio.h>

void fun1()
{
    printf("I'm fun1!\n");
}

int main()
{
    int a = 3, b = 4, c;
    printf("this is a test!\n");
    fun1();
    c = a + b;
    printf("c=%d\n",c);
    return 0;
}
新建makefile:

all: gdb_test clean
objects = gdb_test.o
gdb_test:$(objects)
	gcc $(objects) -o gdb_test
gdb_test.o:gdb_test.c
	gcc -g -c gdb_test.c
clean:
	rm -f gdb_test.o

GDB启动调试:

#gdb gdb_test

设置断点:

b fun1

运行程序:

run

单步执行:

step

退出调试:

quit

在代码的指定位置中断,设置断点的命令是break,通常有如下方式:

break <function>    在进入指定函数时停住
break <linenum>    在指定行号停住。
break +/-offset    在当前行号的前面或后面的offset行停住。offiset为自然数。
break filename:linenum    在源文件filename的linenum行处停住。
break ... if <condition>    ...可以是上述的参数,condition表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100,表示当i为100时停住程序。


可以通过info breakpoints [n]命令查看当前断点信息。此外,还有如下几个配套的常用命令:
delete    删除所有断点
delete breakpoint [n]    删除某个断点
disable breakpoint [n]    禁用某个断点
enable breakpoint [n]    使能某个断点

调试步进相关的命令主要有如下几条:
continue    继续运行程序直到下一个断点
next            逐过程步进,不会进入子函数
setp           逐语句步进,会进入子函数
until           运行至当前语句块结束
finish         运行至函数结束并跳出,并打印函数的返回值



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值