gdb命令的语法
• gdb [参数] Filename
• -help:列出所有参数,并作简单说明。
• -symbols=file
s file:读出文件(file)的所有符号
• -core
-c 这里的core是程序非法执行后core dump产生的文件
• -directory
-d 加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径
• -quiet
-q 使用该参数不显示gdb的介绍和版权信息
启动gdb的常用方式
gdb Filename
如果在启用gdb的时候不想显示gdb的版本信息
可以使用 gdb -q Filename
gdb的调试命令
命令 | 作用 |
---|---|
file | 指定要调试的可执行程序 |
kill | 终止正在调试的可执行程序 |
next | 执行一行源代码但并不进入函数内部 |
list | 部分列出源代码 |
step | 执行一行源代码并不进入函数内部 |
run | 执行当前的可执行程序 |
quit | 结束 gdb 调试任务 |
watch | 可以检查一个变量的值而不管它何时被改变 |
打印表达式的值到标准输出 | |
break N | 在指定的第 N 行源代码设置断点 |
info break | 显示当前断点清单,包括到达断点处的次数等 |
info files | 显示被调试文件的详细信息 |
info func | 显示所有的函数名 |
info local | 显示当前函数中的局部变量信息 |
info prog | 显示被调试程序的执行状态 |
info var | 显示所有的全局和静态变量名称 |
make | 在不退出 gdb 的情况下运行 make 工具 |
shell | 在不退出 gdb 的情况下运行 shell 命令 |
continue | 继续执行正在调试的程序 |
例子
main.c
#include<stdio.h>
int main(int argv,char *argc[])
{
if(argv!=2)
{
printf("argv!=2\n");
}
int value=atoi(argc[1]);
if(value)
{
printf("argc!=0\n");
}
else
{
printf("argc==0\n");
}
return 0;
}
启动gdb
gdb调试的可执行程序,因为mian.c并未编译,我们可以通过下面的方式启动调试
gcc -g -o main main.c
gdb main
启动之后出现(gdb)
查看源代码 list
(gdb) list
1 #