gdb调试命令及其含义

gdb是Linux下非常实用的程序调试插件,因为Linux默认在gcc生成a.out时生成的是Release版本,在ELF段中不存在Debug相关段,需要在编译时在命令最后加上-g 标识,标识生成Debug版本,也因为Debug是在ELF段中插入Debug段落,所以我们可以确定Debug版本是在编译阶段就将相关调试插件放入程序中,而不是在链接的时候放入的。

GDB的相关命令

GDB使用的指令分为以下几个部分,在此一一罗列出:

断点管理命令

l 显示源代码(默认显示main函数所在的文件的源代码)
list filename:num 显示指定文件指定行附近的源代码

b linenum 给指定行添加断点
b funactionname 给指定函数添加断点
b filename:linenum 给指定文件指定行添加断点
b linenum if 条件 添加一个条件断点(if i == 5)在多次循环中使用更加精确和普遍

info b 显示当前所有断点信息
d bpnum 删除断点
disable bpnum 将断点设置为无效
enable bpnum 将断点设置为有效

执行过程控制

r 启动调试
n 执行下一步
s 进入函数执行 类比Visual Studio中的逐语句运行
finish 退出当前函数执行的过程(无论是否真正执行完函数内容)
c 继续运行 运行到下一个断点,中间过程不在停止,如果再没有断点则会运行到程序结束
q 退出调试

p valname 查看变量的值
p &valname 查看变量的地址
p *ptr 查看指针指向的地址存储的值(相当于解引用一次,获取指针所指的值)
//
int arr[10] = {0};
int *parr = arr
//
p arr 显示数据所有的元素,arr是数组首地址,输出数组所有元素数据
p ptrr 这是一个指针变量,会输出数组首元素的地址
p *parr@num 这里的num是元素个数,通过指向数组的指针显示数组所有元素
struct_val 显示结构体变量中所有的成员值
p struct_val.group 显示结构体变量中某个成员值
p ptr_struct->a 通过指针显示结构体变量某个成员的值
p funactionname(a,b) 将函数测试运行(适合于测试函数崩溃的原因是否由传入参数造成)
bt 显示函数调用栈 函数调用流程

之后会写一篇博文来实战gdb调试。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值