当前位置: 首页 > 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.xdnf.cn/news/1297819.html

相关文章:

  • 云计算-Docker Compose 实战:从OwnCloud、WordPress、SkyWalking、Redis ,Rabbitmq等服务配置实例轻松搞定
  • Mybatis学习笔记(七)
  • 《疯狂Java讲义(第3版)》学习笔记ch4
  • 分享10个ai生成ppt网站(附ai生成ppt入口)
  • 智慧工地从工具叠加到全要素重构的核心引擎
  • 跨域及解决方案
  • AI搜索重构下的GEO优化服务商格局观察
  • 一致性哈希Consistent Hashing
  • DAY 42 Grad-CAM与Hook函数
  • JS 解构赋值语法
  • 【OpenCV】Mat详解
  • docker compose部署mysql
  • 面试题之项目中灰度发布是怎么做的
  • 深入了解linux系统—— 线程概念
  • ZigBee入门与提高(3)—— ZigBee协议初识
  • Visual Studio2019/2022离线安装完整教程(含闪退解决方法)
  • Windows bypassUAC 提权技法详解(一)
  • 基于FPGA的8PSK+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR
  • Python之Django使用技巧(附视频教程)
  • HTML <link rel=“preload“>:提前加载关键资源的性能优化利器
  • 企业智脑正在构建企业第二大脑,四大场景引擎驱动数字化转型新范式
  • C++入门自学Day11-- List类型的自实现
  • 手写MyBatis第16弹:泛型魔法应用:MyBatis如何破解List的运行时类型
  • 一种适用于 3D 低剂量和少视角心脏单光子发射计算机断层成像(SPECT)的可泛化扩散框架|文献速递-深度学习人工智能医疗图像
  • OpenCV 高斯模糊降噪
  • Spring Boot + Redis + 布隆过滤器防止缓存穿透
  • 带root权限_贝尔RG020ET-CA融合终端S905L处理器当贝纯净版刷机教程
  • 分布式系统架构设计模式:从微服务到云原生
  • pycharm远程连接服务器跑实验详细操作
  • Go语言实战案例:简易图像验证码生成