准备操作:
假设以下操作被调试的程序内容如下:
文件名为: main.c
#include <stdio.h>
int main()
{
    int i = 0;
    for(i=0; i<3; i++)
    {
        printf("%d\n", i);
    }
    return 0;
}
编译:
gcc -g main.c为了方便gdb调试,我们需要加上-g选项,默认生成的调试文件为 a.out ;
从下图我们可以看到编译gcc -g 编译之后的文件中多了一个 a.out  绿色表示可执行;

启动被调试程序:
gdb ./a.out
或
gdb a.out下图为 启动并运行(r) 之后的效果:

其中 r 表示 run, 就是运行的意思,使用 r 之后,如果中间没有设置断点或遇到错误就会一直执行完毕。
常用的几个命令
下面的命令举例,均以上面的代码为例,分别在第3行和第5行代码位置处设置断点。
- b 
 break 设置断点
 格式:- b 函数名 或 行号 
- delete 行号 
 删除一个断点或监测点
- info b 
 info break 查看当前已经设置的断点 
- list 
 查看源码,并每行对应的行号 
- man gdb 
 查看 gdb 常用命令语法
- n 
 next 单步调试
- p 变量名 
 print 打印变量的值
- r 
 run 运行
- s 
 step 进入子函数
- set logging on 
 打开日志模式;
 记录当前的gdb输出到当前目录的文件gdb.txt中;
- start 
 开始执行程序,在main函数前停下来。
- watch * 变量地址 
 watch 变量
 设置需要观察的变量前后值的变化情况;
 info watchpoints
 开启查看已设置过的变量,目前来看不使用该句也可以查看。
 注意:只有当调试的过程中,遇到其变化时才会显示出来。
- quit 
 退出
常用参数:
- -p 进程ID号
 调试正在运行的程序;
 我的书签
 我的书签
                                 添加书签
 添加书签 移除书签
 移除书签