【Linux】代码调试 “gdb“

在这里插入图片描述

1. 软件发布形式

一般的软件发布有两种:

debug:可以被调试,形成的可执行程序会添加调试信息—>用户不需要+体积大
release:形成的可执行程序会去掉调试信息(面向用户)
调试时使用的是debug模式

  • gcc/g++编译时动态链接,默认release发布
  • gcc -o $@ $^ -g -g以debug方式发布
    可执行呈现的格式->ELF
    redelf

2. 安装gdb

yum install -y gdb:安装gdb调试软件

3. 调试命令

l 行号/函数名/文件名 显示代码内容(记录最近一次操作,下方向键)
r 重新运行
c (continual)运行到下一个断点
b (Break point)打断点——进行范围定位排除
b 行号/内容打断点
b 文件名:行号
info b用来查看断点
d 断点编号删除断点
disable 断点编号 禁用断点
enable 断点编号 使能(禁用/开启)断点

n (next)逐过程
s(step)逐语句

逐语句( ;为分隔符):进入一个函数(对应VS中的F11)
逐过程:每一行看作一个整体,把一行看作一个整体,包括函数。

p +变量/&地址 显示变量的地址和内容,相当于监视;
display 变量名/取地址常显示变量的地址和内容;
undisplay +编号 取消常显示变量的地址和内容;

  • 范围查找(从上至下依次扩大范围)
    c (continual)运行到下一个断点
    fin(finish):将一个函数运行结束就停下来
    until 行号:在一个范围内,直接运行到指定行
    bt :查看调用堆栈

set var name=value:修改一个变量的内容,不用改代码就像多分支测试;
在这里插入图片描述

4. 调试本质:

  • 找到问题(二分思想范围查找,局部逐行查找),以上所有指令都是为了找到问题;
  • 解决问题(上下文代码)
在这里插入图片描述
🌹 点赞收藏加关注🌹
🌹 关注不迷路🌹
👀

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值