GDB调试入门笔记

文章目录

  • What?
  • Why
  • How
    • 安装GDB
      • 安装命令
      • 查看是否安装成功
      • 调试简单的程序
        • 预备一个程序
        • 调试
  • 使用
    • break
    • info
    • list
    • next
    • print
    • step
    • 一些小技巧
      • 在`gdb`前+`shell`
      • 日志功能
      • watch point| catch point
  • 调试core
  • 调试一个运行的程序

What?

GDB是什么?
全称GNU symbolic debugger
百度百科的解释:

程序调试工具
UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

GDB支持的语言

  1. C/C++
  2. Assembly
  3. Go
  4. Pascal
  5. Rust

Why

The purpose of a debugger such as GDB is to allow you to see what is
going on “inside” another program while it executes – or what
another program was doing at the moment it crashed.

这个是gdb官方文档里面的内容给出了为什么需要gdb


How

安装GDB

安装命令

apt-get install gdb

查看是否安装成功

gdb --version

下面是安装成功的信息显示
image

调试简单的程序

预备一个程序

image
编译这个程序生成可执行文件
image
image

调试

如果我们想调试一个程序我们在用gcc编译的时候需要加上参数-g

gcc -g test.c

如何进入调试界面呢?
使用命令

gdb a.out

这里所有的a.out都是用gcc带参数生成的可执行文件

第一个命令
执行

r

image
退出gdb

quit

image

使用

break

break
简写b
可以在函数处打断点,也可以在某一行打断点

b main

在某一行打断点

b 7

info

info 是用来查看信息的
info b
查看自己的打的断点

image

list

查看源代码
list
查看我们写的代码

list

image

next

next;往下走一行
简写:n

print

我们打断点的目的是让程序在,某一步停止,便于我们查看信息。
如何查看信息呢?
使用print
简写p

p arr[0]

image

image

除了可以打印变量的值之外,我们还可以打印变量的地址

p &arr[0]

image
一个int占4个字节

step

进入某个函数
简写s
image

一些小技巧

gdb前+shell

image

日志功能

set logging on

watch point| catch point

调试core

等到用到时候再学吧

调试一个运行的程序

等到用到时候再学吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

lowcode-engine接入编辑器

https://lowcode-engine.cn/site/docs/guide/create/useEditor 方案1 pnpm init pnpm add "alilc/create-elementlatest"pnpm create "alilc/element" editor-project-name选择编辑器 进入执行pnpm install命令安装包 pnpm start报错 pnpm add &qu…

JMeter VS RunnerGo :两大主流性能测试工具对比

说起JMeter,估计很多测试人员都耳熟能详。它小巧、开源,还能支持多种协议的接口和性能测试,所以在测试圈儿里很受欢迎,也是测试人员常用的工具,不少企业也基于JMeter建立起自己的自动化测试能力,提升工作效…

leetcode 经典题目42.接雨水

链接:https://leetcode.cn/problems/trapping-rain-water 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 思路分析 首先,我们需要遍历数组,对于每个元素&am…

链路负载均衡之策略路由

一、策略路由的概念 一般来说,防火墙是根据目的地址查看路由,这种情况下只能根据报文的目的地址为用户提供服务,没办法更加灵活对内网用户进行区分,让不同用户流量走不同的链路转发,如根据源地址、应用协议等区分流量…

3.3改造from框

1.如何解决如何导入组件 2.导入组件如何传值 我们如何区分哪个父组件那个子组件我们如何区分 我们现在只知道我们导入的组件,导入的组件是父组件还是子组件 看一下专业回答 如何进行传值的方式 父组件穿的通过是 v-bind的方式 子组件是通过defineProps接受的方…

如何构建用于物体和标志检测的自定义模型

让我们快速了解一下AWS的机器学习技术栈,它几乎提供了解决我们业务问题所需的所有机器学习方面的支持。 物体检测是什么? 物体检测是从图像或视频帧中检测特定类别实例的任务。我们的目标是在图像/视频帧中找出哪里有什么物体。它是其他依赖物体的任务…

基于单片机的室内空气质量监控系统设计

目 录 摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 方案选择 3 1.2 系统控制原理 4 2系统硬件设计 5 2.1 单片机的选择与设计 5 2.2 温湿度模块设计 6 2.3 甲醛采集模块设计 8 2.4 显示器模块设计 9 2.5 按键模块设计 10 2.6 报警模块设计 11 2.7 加湿及风扇模块设计 1…

【JavaEE】_Spring MVC项目之使用对象传参

目录 1. 使用对象传参 2. 后端参数重命名问题 2.1 关于RequestParam注解 本专栏关于Spring MVC项目的单个及多个参数传参一文中,已经介绍过了对于不同个数的参数传参问题,原文链接如下: 【JavaEE】_Spring MVC 项目单个及多个参数传参-CS…

部署LVS集群之DR模式

直接路由模式----DR模式 理念: 直接路由(是lvs的默认模式) DR模式和隧道模式唯一的区别:dr模式这四台服务器在同一网段,隧道模式 :这四台服务器不在同一网段 客户端 ------->代理服务器------->真实…

Linux命令之top命令

目录 语法 参数说明: 显示信息 top 命令的一些常用功能和显示信息: 第一行:系统负载信息 第二行:进程信息 进程列表 总体系统信息: 进程信息: 功能和交互操作: Linux top 是一个在 L…

JavaBoy假期如何学习项目?弯道块才是真的快!

至暗时刻 老话说的好,弯道快才是真的快,谁直线不会加油?每到假期都是在座的各位弯道超车的时候。转眼自己已经出来搬了快四年砖头了,偶尔访问下牛客发现行情真是一年不如一年。。。不由得回想起自己春招时候的经历。 回想起2020年…

Spring基础——方法注入(Method Injection)

目录 查找方法注入(Lookup Method)查找方法注入基于XML的方法注入基于注解的方法注入 Arbitrary Method Replacement(任意方法替换) 文章所用项目源码参考:java_spring_learn_repo 查找方法注入(Lookup Met…

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言 在研究全球海平面变化的问题中,卫星测高获得总的海平面变化,而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。 测高数据下载网址: Global Ocean Gridded L 4 Sea Surface Heights And …

厉害了,有了这款AI智能代码助手,摸鱼新纪元来了!

大家好啊,欢迎来到web测评。本期给大家分享一款AI智能代码助手BaiduComate,让大家上班有更多的时间来摸鱼,俗话说的好,摸鱼一时爽,一直摸一直爽啊哈哈~~ 智能代码助手使用地址 前往BaiduComatehttps://comate.baidu.c…

3d模型怎么镜像?3d模型镜像的步骤---模大狮模型网

在3D建模软件中,对3D模型进行镜像操作通常是指沿着某个轴线(如X、Y、Z轴)进行镜像翻转,使模型在该轴线的一侧产生对称的镜像效果。以下是在常见的3D建模软件中对3D模型进行镜像的一般步骤: 3d模型镜像步骤: 选择模型:…

碳视野|全国首个ESG区域行动方案通过,上海政府推进ESG有八“要”

引领绿色转型,共筑低碳未来!AMT企源碳管理团队深入解读碳领域政策、概念及标准,分享实践经验,助力产业绿色发展。我们启动“碳视野、碳课堂、碳实践”三大专栏,紧跟碳行业政策动态,以“科普实践分享”为核心…

小程序管理平台:助力企业数字化转型

微信小程序生态近年来发展迅猛,已成为中国互联网不可忽视的力量。截至2023年6月,微信小程序数量已超过300万,同比增长25%,涵盖了电商、生活服务、教育、金融等众多行业。微信小程序内容生态已经日趋完善,并满足各领域用…

windows中使用nnUNet的nnUNet_convert_decathlon_task提示路径不对

找到问题并且解决解决办法 报错时候的指令 nnUNet_convert_decathlon_task -i D:\桌面\nnUNet\DATASET\nnUNet_raw\nnUNet_raw_data\Task05_Prostate 修改为 nnUNet_convert_decathlon_task -i D:/桌面/nnUNet/DATASET/nnUNet_raw/nnUNet_raw_data/Task05_Prostate 修改点&…

Day37 socket、TCP、UDP

socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 数据报套接字(SOCK_DGRAM) UD…

寻找合适的分数线

解法&#xff1a; 统计个数用数组做桶即可 #include<iostream> #include<vector> #include<algorithm> using namespace std; #define endl \n int main() {vector<int> tong(301, 0);int n, m, a;cin >> n >> m;while (n--) {cin >&…