gdb调试总结

gdb是Linux环境下最强大的调试工具,可以调试未运行的程序或者正在运行的程序,还可以分析程序崩溃的coredump文件,这些的前提是,程序在编译时添加了-g选项打开了调试信息。

使用方法:
gdb program: 对于有参数的,可以通过gdb内执行 set args PARAM 来设置参数,或者gdb --args ./program arg1 arg2
gdb attach PID:直接挂载PID进程,此时进程会停止运行,需要命令c来继续运行
gdb program coredumpName :分析程序产生的coredump文件

1. 打断点

使用break进行打断点 ,简写为b , 对程序的第三行进行打断点: b 3

如果是多个文件,可以对某个文件的某一行打断点,如对gdb_test.c的第三行打断点: b gdb_test.c:3 

可以对某个函数进行打断点 ,对本程序中func()函数打断点: b func

同理也可以对多个文件中的某一个文件的函数打断点 : b gdb_test.c:func

2. gdb常用命令

l :查看原代码(l n,从第n行开始查看代码。l  函数名:查看具体函数)

n:单步调试(逐过程,函数直接执行)

s:单步调试(逐语句:跳入自定义函数内部执行)

fin: 跳出函数

c:从当前位置开始继续运行程序

r:从头开始执行程序

p:打印值及地址

return:它会跳过当前函数后面的语句直接返回,返回值可以自定义,紧跟在return命令后面即可

display:追踪查看具体变量值

watch:被设置观察点的变量发生修改时,打印显示

info b:查看断点

delete breakpoints:删除所有断点

delete breakpoints id:删除编号为id的断点

info inferiors :查看进程

info threads :查看线程

thread n(n代表第几个线程,不是线程ID):切换线程

bt : 查看当前线程栈结构

f frameID : 调到指定帧

info frame : 查看当前帧寄存器信息

disassemble : 查看当前帧函数的反汇编代码

thread apply all bt:查看所有线程的堆栈信息

thread apply threadID bt : 查看指定线程堆栈信息

ptype p : 显示变量的类型,如果是一个对象,可以显示数据字段和成员方法,如果我想要真正的类型,必须先设置print对象的变量: set print object on

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值