当前位置: 首页 > news >正文

快速上手gdb/cgdb

Linux调试器-gdb使用

    • 1.背景
    • 2.调试原理、技巧命令
      • 2.1指令
      • 2.2 本质
      • 2.3 技巧

1.背景

程序的发布方式有两种,debug模式和release模式
Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

gcc test.c -o test -g -std=c99
gdb test

在这里插入图片描述

2.调试原理、技巧命令

2.1指令

list (可简写为l)列出代码 ,每次列出行

l1从第一行开始列出,Enter继续列出

b 打断点
r 运行
c(continue r运行到断点处按c继续往后继续进行)

我们有更好cgdb来使用,默认就是上面是代码下面是调试部分 不需要自己list

b 行号 或者b 函数名(前面可以通过b 源文件.c:指明)
info b 列出断点编号(大多数操作有关断点的操作是根据这里列出的断点编号来定的)
info locals 显示所有临时变量
d 编号(删除断点)
n/next 逐过程
s/step 逐语句
bt 调用栈帧
p 变量 打印指定变量
disable 编号 (使断点失能)
enable 编号 (使断点能)
c 跳转到下一个断点
finish 使当前函数执行完 局部区域的快速执行
until 行号 运行到xx行 局部区域内的快速运行
display 变量 (常显示变量)
undisplay 变量编号 (使变量退出常显示)
p 表达式

2.2 本质

调试的本质:
1.找到问题
2.查看代码上下文
断点的本质,是把代码进行块级划分,以块(两个断点之间)为单位快速定位问题区域

2.3 技巧

调试技巧

watch+变量 有些变量不该变却变了

set var 变量=值

条件断点

创建断点并设条件 b 13 if i10 在i10时停止
已存在断点设立条件 condition 断点编号 i==20

cgdb分屏操作
进入代码区
要进入代码区,只需按下ESC键。此时,输入焦点会切换到上方的代码窗口,该窗口类似于vi编辑器,可以浏览、搜索和设置断点等操作。

回到调试端
要从代码区回到调试端(GDB窗口),只需按下i键。此时,输入焦点会切换回下方的GDB窗口,可以在该窗口中输入GDB调试命令,进行程序调试。

http://www.lryc.cn/news/540183.html

相关文章:

  • 《养生》(二)
  • JAVA:集成 Drools 业务规则引擎的技术指南
  • GeoHD - 一种用于智慧城市热点探测的Python工具箱
  • 记一次Ngnix配置
  • 2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序
  • java基础语知识(8)
  • 室内定位精度方案对比
  • Pytorch深度学习教程_5_编写第一个神经网络
  • ImportError: cannot import name ‘FixtureDef‘ from ‘pytest‘
  • 改BUG:Mock测试的时候,when失效
  • 【自动化脚本工具】AutoHotkey (Windows)
  • 专题--Linux体系
  • 【DeepSeek】Mac m1电脑部署DeepSeek
  • Spring AI + Ollama 实现调用DeepSeek-R1模型API
  • 如何在本地和服务器新建Redis用户和密码
  • jmeter接口测试(一)
  • Java-11
  • js中常用方法整理
  • umi react+antd 判断渲染消息提示、input搜索、多选按钮组
  • Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器
  • 【嵌入式常用工具】Srecord使用
  • SwiftUI基础组件之HStack、VStack、ZStack详解
  • 第2章 深入理解Thread构造函数
  • PLC扫描周期和工作原理
  • 玩转Docker | 使用Docker部署本地自托管reference速查表工具
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 2
  • 跟着 Lua 5.1 官方参考文档学习 Lua (3)
  • ORM框架详解:为什么不直接写SQL?
  • 【Server Components 解析:Next.js 的未来组件模型】
  • 2025最新智能优化算法:改进型雪雁算法(Improved Snow Geese Algorithm, ISGA)求解23个经典函数测试集,MATLAB