文章目录
1、gdb 和 cgdb 的区别
相同点:都是调试器,命令基本都通用
gdb:就是一个调试器,启动调试:gdb + 可执行文件
cgdb:是gdb的一个扩展,打开后自动显示源码TUI,方便阅读源码
gdb虽然也可以,但是会经常花屏,需要自己手动刷新界面
缺点:使用print命令的时,无法显示中文字符,可能是乱码或不显示
gdb打开图形界面:开始调试后按ctrl + x +a
gdb -tui + 可执行文件
2、常用的命令
(1)程序运行顺序:
run命令:开始调试
简写命令 r
continue命令:在断点处继续调试,或者按了ctrl c 后继续调试
简写命令 c
next命令:运行到下一行(但是不进入调用的函数) 简写 n
step命令:进入被调用的函数内部 简写 s
util命令:util+ fileline 快速执行到文件某一行 简写 u
jump命令:jump + fileline 跳过中间的代码直接到fileline这一行
finish命令:运行完当前被调用的函数
return 命令:在当前行直接return回去
(2)断点堆栈类命令:
break命令:打断点,例如 break file:line | break 函数名
简写命令 b
backtrace命令:打印堆栈信息
简写命令 bt
frame命令:frame + 堆栈编号(通过bt知道的编号)
作用:跳转到堆栈编号处
简写命令 f
info break命令:查看断点信息
简写命令 i