1. by yejinlei 0.1 beta
  2. 断点相关
    1. disable/enable/delete 断点号
    2. clear //删除当前帧函数、行内所有断点
    3. b/break if 条件 //条件断点
    4. watchpoint //观察点(数据断点)
    5. catchpoint //捕捉断点
      1. tcatch/catch [throw] //C++抛出异常 catch //C++捕获异常 exec //系统调用exec fork //系统调用fork vfork //系统调用vfork load //系统调用load unload //系统调用unload
    6. tracepoint //跟踪点
    7. breakpoint [条件] //普通断点
      1. tb/b 函数名 文件名:函数 行号 文件名:行号 +/-偏移量 *地址
    8. checkpoint //书签
      1. checkpoint
      2. restart n
  3. 指令选项
    1. disass func //查看函数指令
  4. 设置选项
    1. 显示选项
    2. 其他选项
  5. 其他
    1. shell shell命令 //gdb中执行shell命令
    2. set history expansion on //允许使用历史命令,Ctrl+R
    3. make 参数
    4. 日志输出
      1. set logging on //日志 set logging off set logging file file set logging overwrite [on|off] set logging redirect [on|off] show logging
    5. show version
    6. apropos 表达式 //在gdb命令和文档中搜索内容
    7. show environment [varname] //显示环境变量 set environment varname=[value] unset environment varname
  6. FAQ
    1. 出现"No such file or directory", 首先找到文件目录,(gdb)cd 目录
    2. 出现“ptrace:Operation not permitted”, 查看是否已经存在gdb进程,kill掉再重新attatch
  7. 信号量相关
    1. handle 信号量名 stop/nostop //出现信号量时,停止/不停止
    2. signal 信号量 //gdb发送信号量给程序
  8. 线程相关
    1. thread 线程号 //切换线程
  9. 进程相关
    1. set follow-fork-mode [parent|child] //程序调用fork后,选着父进程还是子进程
    2. set detach-on-fork [on|off]
  10. info相关
    1. info break/watch //显示用户断点
    2. info locals //显示当前栈帧局部变量
    3. info win //窗口大小
    4. info program //程序运行状态
    5. maint info break //所有断点
    6. info threads //线程信息
    7. info signals/handle //信号量信息
    8. info catch //异常信息
    9. info trace //跟踪信息
    10. info checkpoint //书签信息
    11. info functions //函数信息
    12. info sources //源码列表
    13. info source //源码
    14. info reg //寄存器信息
    15. info all-reg //所有寄存器,包括浮点
    16. info display //自动显示的信息
    17. info inferiors //被调试程序信息
    18. line func/line //源码在内存的地址
  11. 堆栈相关
    1. bt/backtrace [full][+/-N] //显示堆栈
    2. f/frame i //选择帧
  12. 调试相关
    1. s/step //单步,步入 si/stepi //同s,并显示机器指令 n/next //单步,步过 ni/next1 //同n,并显示机器指令
    2. start //同b main
    3. finish //退出程序
    4. return //退出函数
    5. kill //kill进程
    6. attach 进程号 //附着进程 detach 进程号
    7. call 函数 //gdb直接调用函数
  13. GDB7.0反向调试
    1. record /record stop //开启和关闭反向调试
    2. Reverse-continue('rc') Reverse-finish Reverse-next('rn') Reverse-nexti('rni') Reverse-step('rs') Reverse-step set exec-direction
    3. command
    4. jump func/addr //改变流程 set $pc=value
  14. 代码相关
    1. l/list [m,n] //显示代码
    2. gdb -tui 程序
    3. layout next //切换到下一个布局模式 layout prev //切换到上一个布局模式 layout src //只显示源码 layout asm //只显示汇编指令 layout split //显示源码和汇编指令 layout regs //显示寄存器 focus cmd/src/asm/regs/next/prev //切换当前窗口 refresh //刷新所有窗口 tui reg next //显示下一组寄存器 tui reg system //显示系统寄存器 update //更新源码窗口和当前执行点 winheight name +/- line //调整name窗口高度 tabset //设置tab的字符数
    4. search 表达式
  15. 变量内存相关
    1. file:var //全局变量
    2. func:var //函数内部变量
    3. p/print [/x][/F] var //变量值 x 按十六进制格式显示变量 d 按十进制格式显示变量 u 按十六进制无符号格式显示变量 o 按八进制格式显示变量 t 按二进制格式显示变量 a 按十六进制格式显示变量 c 按字符格式显示变量 f 按浮点数格式显示变量
    4. whatis var //变量类型 ptype var
    5. set var=value //变量赋值
    6. print *数组名@长度 //显示动态数组 print 数组名 //显示静态数组
    7. display 表达式/变量 //自动显示内容
    8. x/<长度/格式/字节> <地址> //显示内存内容
  16. 装载相关
    1. file 程序 //装载程序和符号
    2. gdb 程序
    3. start 参数列表 set args 参数列表 //修改main参数
    4. gdb 程序 进程号 //attach方式 (gdb)attach 进程号
    5. gdb -p 进程号 //attach方式 (gdb)file 程序
    6. gdb --args 程序 参数
    7. gdb -s 程序名 //加载符号,等同file
    8. gdb -c core //加载核心文件
    9. gdb -d 目录 //搜索源码程序路径
  17. 编译相关
    1. gcc -g demo.c -o demo //注意-g
  18. 核心文件相关
    1. ulimit -c unlimited/0 //产生/取消核心文件
    2. ~/.bash_profile中加入ulimit -S -c unlimited > /dev/null 2>&1 或 /etc/profile加入 或 /etc/security/limits.conf加入 * soft core 0
    3. gdb 程序名 -c core