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

C++:浅尝gdb

hp window11 wsl + ubuntu
在这里插入图片描述

what is gdb?

GNU调试器(英语:GNU Debugger,缩写:GDB),是GNU软件系统中的标准调试器,此外GDB也是个具有移携性的调试器,经过移携需求的调修与重新编译,如今许多的类UNIX操作系统上都可以使用GDB,而现有GDB所能支持调试的编程语言有C、C++、Pascal以及FORTRAN。
检查本地已安装:
在这里插入图片描述
在这里插入图片描述

how to use gdb?

用vim写了一个c文件hello.c

#include<stdio.h>int main()
{int i = 0;printf("hello,world");printf("i is %d\n",i);i++ ;printf("i is now %d\n",i);return 0;
}

使用cat命令查看hello.c的内容

在这里插入图片描述
使用gcc编译用于dubug的文件hello.c,会默认生成名为a.out的执行文件

gcc -g hello.C

gcc: The GNU Compiler Collection command for compiling C programs.
-g: This flag tells GCC to include debugging symbols (useful for tools like gdb).
hello.c: The source file to be compiled.
By default, this command generates an executable named a.out on Linux

gdb a.out

在这里插入图片描述
看到(gdb)字说明可以使用gdb命令了
使用gdb的start命令,开始dubeg ,停留在main函数体处。
而list可以在gdb里面列出正在操作的文件内容。

在这里插入图片描述
然后按下Ctrl + X + A开启TUI模式,就是下面这个好看的视图,当然关闭也是此快捷键。
在这里插入图片描述
使用next,可以对程序进行单步跟踪,由原来的第4行走到原来的第5行。
在这里插入图片描述
还可以使用layout split可以看到源码和相对应的汇编。当然这里只是抛砖引玉,使用了gdb中的一部分命令进行演示,常用gdb命令放到文章末尾了,可以慢慢把玩。
在这里插入图片描述最后按下quit(简称q)退出,按下y确认退出gdb调试。体验就此完毕,怎么说呢,之前对gdb比较神秘,现在也算是微微打开了它的神秘面纱。
在这里插入图片描述

Here are some commonly used GDB (GNU Debugger) commandsclick me

在这里插入图片描述
在这里插入图片描述

视图切换:
快捷键 功能说明
Ctrl + X + S 显示 源码视图(等效 layout src)
Ctrl + X + A 显示 汇编视图(等效 layout asm)
Ctrl + X + R 显示 寄存器视图(等效 layout regs)
Ctrl + X + F 显示 函数调用栈视图(等效 layout split,混合源码+汇编)

http://www.dtcms.com/a/331748.html

相关文章:

  • 创客匠人:共情力在创始人IP塑造中的作用
  • 使用Docker和Miniconda3搭建YOLOv13开发环境
  • 如何在 Ubuntu 24.04 LTS Noble Linux 上安装 Wine HQ
  • Java多线程进阶-深入synchronized与CAS
  • RS232串行线是什么?
  • 考研408《计算机组成原理》复习笔记,第五章(1)——CPU功能和结构
  • C#WPF实战出真汁01--搭建项目三层架构
  • 解决 pip 安装包时出现的 ReadTimeoutError 方法 1: 临时使用镜像源(单次安装)
  • LeetCode 1780:判断一个数字是否可以表示成3的幂的和-进制转换解法
  • 基于 LDA 模型的安徽地震舆情数据分析
  • 相机Camera日志实例分析之十四:相机Camx【照片后置炫彩拍照】单帧流程日志详解
  • python——mock接口开发
  • CSS中的 :root 伪类
  • GitHub 仓库代码上传指南
  • svg 转 emf
  • MySQL 事务隔离级别深度解析:从问题实例到场景选择
  • Java 中实体类、VO 与 DTO 的深度解析:定义、异同及实践案例
  • 20道JavaScript进阶相关前端面试题及答案
  • 报数游戏(我将每文更新tips)
  • emqx tar包安装
  • DAY 22|算法篇——贪心四
  • 调整磁盘分区格式为GPT
  • 数据结构:优先队列 (Priority Queue)
  • 解剖HashMap的put <五> JDK1.8
  • 微信公众号推送文字消息与模板消息
  • 字节跳动 VeOmni 框架开源:统一多模态训练效率飞跃!
  • JAVA 抽象类可以实例化吗
  • 机器学习概述(一)
  • Spring Cloud系列—Alibaba Sentinel熔断降级
  • 第一章 随机事件与概率