GDB调试

GDB调试

调试二进制

gcc -g -o main main.c
gdb main

调试正在运行中的程序

gdb attach <pid>
gdb main -p <pid>

基本命令

命令 缩写 命令说明
break b break行号、break函数名、break文件名:行号(函数名)
break 24 if i==15 条件断点
info break 查看断点信息
enable断点编号:表示启用该断点
run r 执行程序,直到遇到断点或者一直运行下去
step s 进入下一步,如果该行有函数,则进入函数
next n 执行当前语句,不进入函数
print p p i 打印变量i的值
p *req 打印结构体指针的内容
p ary[0]@5 查看ary数组的前五个元素
p /x ary[0]@5 以16进制查看ary数组的前五个元素
p &i 显示变量的地址
p *ary 指针指向的变量的值
print 函数名::变量名 当不同函数存在重名变量时指定函数名显示
continue c 继续执行程序,转到下一个断点处
finish f 结束当前函数,回到调用该函数的位置
quit q 结束调试
watch w 设置监视点,监视表达式的变化
set var i=10 调试时设置的值
backtrace bt 显示程序当前运行位置及函数调用栈
up、down 遍历函数堆栈
list 列出当前调试行附近的行
set args 设置主程序的参数
例如:./main args1 args2
gdb main
(gdb)set args args1 args2
回车 执行上一条命令

查看相关信息:

info b		# 断点被命中多少次
info locals	# 打印所有的本地变量
info args	# 打印当前函数的所有参数

调试core文件

  1. ulimit -a 查看系统参数;
  2. ulimit -c unlimit 把core文件的大小设为无限制;
  3. 运行程序,生成core文件;
  4. gdb 二进制文件 core文件
gdb main core.16382
(gdb)bt
posted @ 2023-02-22 20:53  Suraer  阅读(19)  评论(0编辑  收藏  举报