release 发行版
debug 开发版本 可调试版本 添加了一些debug_*段
源代码 ----》 可执行文件 默认的release
编译链接 debug gcc -o debug main.c -g
编译过程中加入debug信息:
gcc -o main.c -g
链接不会加入debug信息
gcc -o main main.o
调试的对象: 单步执行
main.c main.o debug(调试)
gdb debug 进入调试
l(list) 显示源代码(默认显示main函数所在文件的源代码)
list filename.num 显示指定文件指定行附近的源代码
断点:
b(break) linenum 给指定行添加断点
b functionname 给指定函数添加断点
b filename:linenum 给指定文件指定添加断点
b linenum if 条件 添加一个条件断点
Info b 显示断点信息
d bpnum 删除断点
disable bpnum 将断点设置为无效
enable bpnum 将断点设置为有效
执行过程控制:
r (run) 启动调试
n(next) 执行下一步
s 进入函数中执行
finish 退出函数执行
c(continue) 继续运行 运行到下一个断点中
q(quit) 退出调试
各种查看:
p(print) valname 查看变量的值
p &valname 查看便量的地址
p *ptr 查看指针指向的地址存储的值
p arr 显示数组所有元素
p *ptrarr@num(num表示元素个数) 通过指向数组的指针显示所有元素
p struct_val 显示结构体变量中所有成员的值
p struct_val.a 显示结构体变量中某个成员的值
p ptr_struct->a 通过指针显示结构体变量中某个成员的值
p functionname(a,b) 将函数测试运行
bt 显示函数调用栈(函数调用流程)