Linux:调试器 gdb/cgdb 的使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、调试前的预备
- 二. 使用(gdb的常用命令)
- 三. 推荐安装cgdb
- 总结
前言
本文主要讲解如何在Linux环境下面来对代码进行调试
一、调试前的预备
- 程序的发布⽅式有两种, debug 模式和 release 模式, Linux gcc/g++ 出来的⼆进制程
序,默认是 release 模式。 - 要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候,加上 -g 选项(表示是debug模式),如果没有添加,程序⽆法被编译
二. 使用(gdb的常用命令)
命令 | 作⽤ | 样例 |
---|---|---|
list/l | 显⽰源代码,从上次位置开始,每次列出十行 | list/l 10 |
list/l 函数名 | 列出指定函数的源代码 | list/l main |
list/l ⽂件名:⾏号 | 列出指定⽂件的源代码 | list/l mycmd.c:1 |
r/run | 从程序开始连续执⾏ | run |
n/next | 单步执⾏,不进⼊函数内部 | next |
s/step | 单步执⾏,进⼊函数内部 | step |
break/b [⽂件名:]⾏号 | 在指定⾏号设置断点 | break 10 /break test.c:10 |
break/b 函数名 | 在函数开头设置断点 | break main |
info break/b | 查看当前所有断点的信息 | info break |
finish | 执⾏到当前函数返回,然后停⽌ | finish |
p 变量 | 打印指定变量的值 | p x |
print/p 表达式 | 打印表达式的值 | print start+end |
set var 变量=值 | 修改变量的值 | set var i=10 |
continue/c | 从当前位置开始连续执⾏程序 | continue |
delete/d /breakpoints | 删除所有断点 | delete breakpoints |
delete/d /breakpoints n | 删除序号为n的断点(不是根据行号删除!) | delete breakpoints 1 |
disable breakpoints | 禁⽤所有断点 | disable breakpoints |
enable breakpoints | 启⽤所有断点 | enable breakpoints |
info/i breakpoints | 查看当前设置的断点列表 | info breakpoints |
display | 变量名 跟踪显⽰指定变量的值(每次停⽌时) | display x |
undisplay 编号 | 取消对指定编号的变量的跟踪显⽰ | undisplay 1 |
until X⾏号 | 执⾏到指定⾏号 | until 20 |
backtrace/bt | 查看当前执⾏栈的各级函数调⽤及参数 | backtrace |
info/i locals | 查看当前栈帧的局部变量值 | info locals |
quit | 退出GDB调试器 | quit |
三. 推荐安装cgdb
安装cgdb:
• gdb的基本调试还是⿇烦,虽然是⿊屏,但是还是想看到代码调试
• 推荐安装cgdb:
• Ubuntu:sudo apt-get install -y cgdb
• Centos: sudo yum install -y cgdb
总结
本文主要介绍了gdb的一些指令方便使用的时候查看。