gdb调试
在没有集成开发环境的情况下,使用gdb调试。
在gdb调试前,必须先编译,生成可执行程序,使用gcc命令编译和**-g**参数
gcc main.c f1.c f2.c -o app -g
-g:给执行程序保留函数名和变量名
启动gdb
测试代码:
#include"stdio.h"
int main(int argc,char *argv[])
{
int j=argc,i;
printf("argc=%d\n",argc);
for(i=0;i<j;i++)
printf("argc=%d,argv[]=%s\n",i,argv[i]);
}
- gdb+执行程序名,例如agd app
- 给程序传参:set args 参数1 参数2
执行程序
开始:r启动,没有设定断点
查看文件信息
查看当前文件:
l:查看当前文件的调试信息,默认10行
l+行号:显示特定行号的上下文
l +函数名:查看当前文件特定函数
查看其他文件:
l + 文件名:行号:查看文件信息
l +文件名 :函数名:查看特定函数的信息
设置显示行数:
show listsize:显示输出行
set listsize (number):设置输出行号
设置断点
单个断点:
b+设置断点所在行:设置断点
b+函数名:函数名处设定断点
b+文件名:行号/函数名:在别的函数设置断点
查看断点:
i b:查看断点
无效断点:对于函数中的,大括号和注释,设置的断点是无效的。
看断点是否使能,或者说是否有效,看Enb这个项,y就是有效。
其中Num为断点的标号
删除断点
单个删除:每个断点号用空格隔开。
d + 断点号:
连续删除:断点号范围表示,例如4-7
d+断点号范围
断点失能
dis+断点号
断点使能
enb+断点号
条件断点
b+行号+if 变量==var:当某行的变量等于某个值的时候停止