【Linux】09.Linux 下的调试器——gdb/cgdb

一、gdb/cgdb的认识

我们在VS上调试时都是使用Debug版本的,但是在Linux下gcc/g++默认生成的是Relaese版本,我们想要进行调试就要用-g选项生成Debug版本的程序。但是Linux下的gdb是一种命令行调试工具,因此就有了cgdb为我们提供可视化的调试界面。

二、gdb的基本命令

  • 进入gdb/cgdb: gdb/cgdb 文件名
  • 退出gdb/cgdb: quit
  • l: 显示代码
    • l 行号: 显示从给定行开始的10行内容
    • l 函数名: 显示给定函数的10行内容
    • l 文件: 行号 显示给定文件对应行号开始的10行内容
  • r: 运行代码 相当于VS中的F5
  • b 行号: 给定行号处打断点
  • d 断点编号: 删除断点编号对应的断点
  • info b: 显示断点信息
  • disable: 关闭断点
  • enable: 开启断点
  • n: 单步执行(逐过程)相当于VS中的F10
  • s: 单步执行(逐语句)相当于VS中的F11
  • bt: 查看堆栈调用
  • dispaly 变量名: 常显示变量的值
  • undisplay 变量名: 去掉变量的常显示
  • p 变量: 打印变量的值
  • until 行号: 跳转到指定行
  • c: 跳转到下一处断点
  • finish: 结束某一函数,并显示返回值
  • watch 变量名: 监视某一变量,变得时候会有显示
  • set var 表达式: 修改变量值,方便我们的验证
  • 条件断点:
    • b 行号 if 执行的条件: 创建新的条件断点
    • condition 断电编号 条件: 将已经存在的断点变成条件断点
相关推荐
2501_9403152610 小时前
【无标题】1.17给定一个数将其转换为任意一个进制数(用栈的方法)
开发语言·c++·算法
kida_yuan10 小时前
【Linux】文件系统与 fsck.ext4 修复 - 我踩过的坑与总结
linux·运维·网络
lagrahhn10 小时前
Java的RoundingMode舍入模式
java·开发语言·金融
Star Learning Python10 小时前
MySQL基础知识的总结
运维
何以不说话11 小时前
mysql 的主从复制
运维·数据库·学习·mysql
二二牧人11 小时前
qemu arm64 linux开发环境搭建
linux·运维·数据库
米高梅狮子11 小时前
01. 配置DHCP服务器
服务器·网络·php
云上凯歌11 小时前
01 GB28181协议基础理解
java·开发语言
北龙云海11 小时前
从宕机到智变:2025数据中心进化启示录,数智运维如何定义未来
运维·ai·数据中心·智算·数智运维·数据中心规划
FakeOccupational11 小时前
【电路笔记 PCB】Altium Designer : AD使用教程+Altium Designer常见AD操作命令与流程
开发语言·笔记