Linux下C/C++调试工具GDB

实例调试程序 main.c :
#include <stdio.h>

int add_range(int low, int high)
{
int i, sum;
for (i = low; i <= high; i++)
sum = sum + i;
return sum;
}

int main(void)
{
int result[100];
result[0] = add_range(1, 10);
result[1] = add_range(1, 100);
printf("result[0]=%d\nresult[1]=%d\n", result[0], result[1]);
return 0;
}

以上函数add_range功能为从low加到high,基本调试步骤:
1.编译
$ gcc -g main.c -o main
2.调试
$ gdb main
3.帮助
(gdb) help
4.从第几行列出代码
(gdb) list 10
(gdb) l 10
5.直接回车重复上一条命令
6.开始调试,gdb会停在main()函数变量定义后第一条语句
(gdb) start
7.执行下一条(不进入函数),执行到printf语句时会直接输出到终端
(gdb) next
(gdb) n
8.步进,进入函数
(gdb) step
(gdb) s
9.查看栈帧
(gdb) backtrace
(gdb) bt
10.选择栈帧
(gdb)frame 帧编号
(gdb)f 帧编号
11..显示当前栈帧局部变量
(gdb)info locals
(gdb)i locals
12.打印变量
(gdb)print 变量
13.给变量赋值
(gdb)set var 变量=值
14.运行结束
(gdb) finish
15.退出
(gdb) quit

断点调试:
1.每次运行都显示变量
(gdb) display 参数
2.取消display
(gdb) undisplay 参数
3.设置断电
(gdb)break 行数
(gdb)b 行数
(gdb)b 文件名:行数   #在多文件情况下
4.运行至断点
(gdb)continue
(gdb)c
5.显示所有断点
(gdb) info breakpoints
(gdb) i breakpoints
6.删除某个断点
(gdb) delete breakpoints 断点号
7.条件断点
(gdb) break 断点行数 if 变量 != 0
8.重新开始运行到断点
(gdb) run
(gdb) r
9.禁用断点
(gdb)disable breakpoints 断点号
10.启用断点
(gdb)enable 断点号

未完待续。。。

 

posted @ 2012-08-28 22:48  猪尬亮  阅读(2368)  评论(1编辑  收藏  举报