GDB调试

常用命令:

命令 缩写 说明
help h 查看帮助命令(help+命令)
run r 运行/重新运行待调试文件
start 单步运行,停在执行语句第一行
next n 单步步过(逐过程,运行到下一行)
step s 单步步入(逐语句,进入函数内部)
continue c 让暂停的程序继续运行
until u 运行到指定行停下
return 立即结束当前函数并返回指定值
finish fi 继续执行完该函数再正常退出当前函数
jump j 将当前程序执行流跳转到指定行或地址 (jump+行号/地址)
break b 添加断点 (break+函数/行号/文件:行号/文件:函数)
tbreak tb 添加临时断点
delete d 删除断点 (delete+断点编号)
enable 启用指定断点 (enable+断点编号)
disable 禁用指定断点 (disable+断点编号)
print p 打印变量或寄存器值 (print+变量名/变量名=值)
call 调用函数 (call+函数)
thread 切换到指定线程 (thread+线程编号)
backtrace bt 查看当前线程的调用堆栈
frame f 切换到当前调用堆栈的指定位置(f+堆栈编号)
list l 显示源代码 (list+函数/行号/文件:行号/文件:函数)
watch 监视变量或内存地址 (watch+变量)
ptype 查看变量类型 (ptype+变量名)
disassemble dis 查看汇编代码
info i 查看断点/线程/监视等信息 (info+break/thread/watch)
set args 设置程序启动命令行参数
show args 查看设置的命令行参数

安装GDB:

使用命令安装

sudo apt-get install gdb

源码安装
http://ftp.gnu.org/gnu/gdb/
# 下载源码包
wget http://ftp.gnu.org/gnu/gdb/gdb-11.2.tar.gz
# 解压gdb
tar -zxvf gdb-11.2.tar.gz
# 进入gdb
cd gdb-11.2
# 生成makefile文件
./configure
# 执行make
make
# 安装
make install
# 查看是否安装成功
gdb -v

启动GDB调试:

直接调试目标程序(附加调试后,需要run命令启动程序):

gdb [program]

附加进程id调试:

gdb [program] [pid]

调试core文件(如果开启,core文件默认生成在可执行文件运行命令的同一路径下):

gdb [program] [core]

退出GDB:

使用命令 q 或者 Ctrl+d 退出GDB
如果附加进程,退出前先 detach 解除进程

使用core

方便程序出错崩溃时,重现出错问题,使用gdb对core文件进行调试
Ubuntu生成和调试core文件

注意:

编译程序时需要加上-g,之后才能用gdb进行调试(gcc -g main.c -o main)

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!