tip:首先编译时需要-g携带编译信息
gcc a.c -g -o app
gdb app :进入调试
- run/r :运行程序
- quit/q :退出程序
- break/b :打断点
1.b +行号 2. b +函数名 3. b +if 变量名=value (条件断点) - delete/del:删除断点,后面接断点编号,编号由info查看得知
- info/i :查看信息 i b 查看断点信息
- print/p :打印变量的值或地址 eg; p i p &i
- ptype : 打印变量的数据类型 ptype i 返回int
- n: 逐条语句执行
- c : 执行到下一个断点位置
- step/s :进入被调用函数内部
- finish :退出被调用的函数内部
- u: 退出当前循环
- display: 追踪变量值,后面接变量名
- undisplay :取消追踪变量值,后面借编号,编号有info +display 获取
- GDB中实现输入linux的基本命令 eg:shell cat a.c(在GDB中输入)
- set logging on :开启日志功能,退出调试后会自动生成log.txt文件,里面记录的是每个操作的步骤
- 现实中程序崩溃时,用到调试功能才是常见的情况,当程序出现错误时,应该调试core文件,操作如下 ulimit -a , ulimit -c ulimited 后,程序出错是后出现一个core文件 再 gdb app +core文件名
- gdb 调试一个正在运行的程序 gdb -p -pid