函数
- info functions 列出可执行文件的所有函数名称
- step(s) / next(n) 使用gdb调试遇到函数(函数有调试信息)时,s可以进入函数,n不进入
- set step mode on 进入没有不带调试信息的函数
- finish 单步调试函数时,如果不想跟踪时使用,函数会继续执行完并打印结果
- return 单步调试时,如果不想跟踪时使用,不会继续执行而是直接返回
- call / print 直接调用函数执行
- i(info) frame 显示函数堆栈帧信息
断点
- b namespacename :: funcname 在namespace中对函数设置断点
- (anonymous namespace) :: funcname 在匿名空间中对函数设置断点
- b (path/file :)linenum 在当前文件某一行打断点
- save breakpoints file-name-to-save 保存设置的断点
- tbreak(tb) 设置临时断点
- i b(info breakpoints) 查看断点
- b linenum if condition 设置条件断点
- ignore bnum count 忽略count次编号为bum的断点
观察点
- watch 设置观察点,当一个变量值发生变化时,程序会停下来
- watch expr thread threadnum 设置观察点针对特定线程(编号为threadnum的线程)生效
- rwatch(rw) 设置读观察点,当发生读取变量行为时,程序就会暂停
- awatch(aw) 设置读写观察点,当发生读取或改变变量值的行为时,程序暂停
Catchpoint
- tcatch 设置catchpoint只触发一次
- catch fork 为fork调用设置catchpoint
- catch vfork 为vfork调用设置catchpoint
- catch exec 为exec系列系统调用设置catchpoint
- catch syscall 【name | number】 为系统调用设置catchpoint
打印
- x/s varname 打印ASCII字符串varname的值
- p vec 打印C++ STL容器的内容
- set print elements unlimited / 0 设置打印规模没有限制(本来最多输出200个元素)
- p arrayname 打印数组
- p array【index】@ num 从第index位打印连续num个数组元素
- set print array-indexes on , p arrayname 设置打印索引下标,打印数组(包括索引和值)
- bt full / info locals 显示各个函数的局部变量值
- i proc mappings 查看进程的内存映射信息
- i files 更详细的输出进程的内存信息,包括引用的动态链接库等
- whatis / ptype varname 查看变量类型 / 详细类型信息
- i variables varname 查看定义该变量的文件
- x/nfu addr 以f(x为16进制,o为8进制)格式打印从addr开始的n哥长度单元为u(b:byte,h:halfword / 2 byte,w:word / 4 byte, g:giant word / 8 byte)的内存值
- list(l) 显示源代码以及行号
- set print pretty on , p st 打印结构体
- set print object on ,p p 按照派生类型打印对象