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