GCC及GDB的使用
参考视频及博客
https://www.bilibili.com/video/BV1EK411g7Li/?spm_id_from=333.999.0.0&vd_source=b3723521e243814388688d813c9d475f
https://www.bilibili.com/video/BV1ei4y1V758/?buvid=XU932919AEC08339E30CE57D39A2BABF6A44F&from_spmid=search.search-result.0.0&is_story_h5=false&mid=rSmqqQLB5PQj7nof4wjfpQ%3D%3D&p=5&plat_id=114&share_from=ugc&share_medium=android&share_plat=android&share_session_id=0d47723b-d4d0-430f-9f99-3fbe1750ce7a&share_source=WEIXIN&share_tag=s_i&spmid=united.player-video-detail.0.0×tamp=1730192395&unique_k=9Cv4b9q&up_id=627875426&share_source=weixin
1.GDB的主要功能
开始并设置参数
打断点,在特殊情况下停止
停止时,发生了什么
GDB可以支持C, C++, Go, Pascal, 汇编语言等
2.安装GDB
安装:yum install gdb
查看版本:gdb -v
3.调试
调试的方式
gcc -g main.c
gdb ./a.out
程序
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>void func1()
{printf("func1-running\n");
}int main()
{int i;for(i = 0; i < 10; i++){printf("func-main-running-%d\n",i);sleep(1);}func1();return 0;
}
调试
命令:
run r 运行
break b 打断点b main //在函数main那一行打断点b 8 //在第8行打断点
list 展示代码
info b 显示断点信息
quit q 退出
next n 下一步
print p 打印 注意这里是print, 不是printf
step s 进入某个函数
r: 没有设置断点的时候,r会将程序运行完
list 展示代码
b 打断点
r 运行程序
n 下一步
print
q 退出
s 进入某个函数
4.watchpoint
4.1设置GDB中调用shell的命令:
例如:
shell ls
4.2日志功能
set logging on #会把output打印到gdb.txt中
4.3观察某个变量的值
print &point #打印指针point的值
print i #打印变量i的值watch &point #观察指针point的值,当point发生变化的时候,会打印出来
watch i #观察变量i的值,当i的值发生变化时,会打印出来 old value 和new value
按下n进入下一步,按下c进入下一步
5.当程序出现错误的时候,比如指针越界
会产生一个core文件
(假如程序出错的时候,没有产生core文件,就要通过ulimit来设置 ; ulimit -c unlimited)
./a.out #执行文件
出错,产生core
使用: gdb ./a.out core
执行完这一句话之后,会打印出错误的地址。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{int *p = NULL;*p =10;return 0;
}
su root之后重新查看
这里还是没出来core文件,后续再排查为什么
6.调试一个正在运行的进程。
gcc -g test_for.c
./a.out &
上边代码会返回进行的pid
gdb -p pid
相关文章:
GCC及GDB的使用
参考视频及博客 https://www.bilibili.com/video/BV1EK411g7Li/?spm_id_from333.999.0.0&vd_sourceb3723521e243814388688d813c9d475f https://www.bilibili.com/video/BV1ei4y1V758/?buvidXU932919AEC08339E30CE57D39A2BABF6A44F&from_spmidsearch.search-result.0…...
大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
数据结构——基础知识补充
1.队列 1.普通队列 queue.Queue 是 Python 标准库 queue 模块中的一个类,适用于多线程环境。它实现了线程安全的 FIFO(先进先出)队列。 2.双端队列 双端队列(Deque,Double-Ended Queue)是一种具有队列和…...
只有.git文件夹时如何恢复项目
有时候误删文件但由于.git是隐藏文件夹而幸存,或者项目太大,单单甩给你一个.git文件夹让你自己恢复整个项目,该怎么办呢? 不用担心,只要进行以下步骤,即可把原项目重新搭建起来: 创建一个文件…...
anchor、anchor box、bounding box之间关系
最近学YOLO接触到这些概念,一下子有点蒙,简单总结一下。 anchor和anchor box Anchor:表示一组预定义的尺寸比例,用来代表常见物体的宽高比。可以把它看成是一个模板或规格,定义了物体框的“形状”和“比例”ÿ…...
代码随想录算法训练营第三十天 | 452.用最少数量的箭引爆气球 435.无重叠区间 763.划分字母区间
LeetCode 452.用最少数量的箭引爆气球: 文章链接 题目链接:452.用最少数量的箭引爆气球 思路: 气球的区间有重叠部分,只要弓箭从重叠部分射出来,那么就能减少所使用的弓箭数 **局部最优:**只要有重叠部分…...
海亮科技亮相第84届中国教装展 尽显生于校园 长于校园教育基因
10月25日,第84届中国教育装备展示会(以下简称“教装展”)在昆明滇池国际会展中心开幕。作为国内教育装备领域规模最大、影响最广的专业展会,本届教装展以“数字赋能教育,创新引领未来”为主题,为教育领域新…...
C语言数据结构学习:栈
C语言 数据结构学习 汇总入口: C语言数据结构学习:[汇总] 1. 栈 栈,实际上是一种特殊的线性表。这里使用的是链表栈,链表栈的博客:C语言数据结构学习:单链表 2. 栈的特点 只能在一端进行存取操作&#x…...
如何快速分析音频中的各种频率成分
从视频中提取音频 from moviepy.editor import VideoFileClip# Load the video file and extract audio video_path "/mnt/data/WeChat_20241026235630.mp4" video_clip VideoFileClip(video_path)# Extract audio and save as a temporary file for further anal…...
MongoDB 6.0 主从复制配置
以下是 MongoDB 6.0 版本配置主从的详细安装步骤: 1. 安装 MongoDB:可以从官网下载 MongoDB 6.0 的安装包并进行安装,或者使用相应的包管理工具进行安装。 2. 配置主节点:在主节点的 MongoDB 配置文件(默认路径为 …...
NPU 神经网络处理单元
Ⅰ 什么是 NPU? 当前正处于神经网络和机器学习处理需求爆发的初期。传统的 CPU(中央处理器)/GPU(图形处理器)可以执行类似任务,但专门为神经网络优化的 NPU(神经处理单元)比 CPU/GP…...
安宝特分享 | AR技术引领:跨国工业远程协作创新模式
在当今高度互联的工业环境中,跨国合作与沟通变得日益重要。然而,语言障碍常常成为高效协作的绊脚石。安宝特AR眼镜凭借其强大的多语言自动翻译和播报功能,正在改变这一局面,让远程协作变得更加顺畅。 01 多语言翻译优势 安宝特A…...
Vulkan 开发(五):Vulkan 逻辑设备
图片来自《Vulkan 应用开发指南》 Vulkan 开发系列文章: 1. 开篇,Vulkan 概述 2. Vulkan 实例 3. Vulkan 物理设备 4. Vulkan 设备队列 在 Vulkan 中,逻辑设备(Logical Device)是与物理设备(Physical D…...
Kafka 解决消息丢失、乱序与重复消费
一、引言 在分布式系统中,Apache Kafka 作为一种高吞吐量的分布式发布订阅消息系统,被广泛应用于日志收集、流式处理、消息队列等场景。然而,在实际使用过程中,可能会遇到消息丢失、乱序、重复消费等问题,这些问题可能…...
计算机专业毕业生面试工具推荐:白瓜面试
随着毕业季的临近,计算机专业的毕业生们即将步入职场,面试成为了他们必须面对的挑战。在这个过程中,选择合适的面试工具可以大大提高求职成功率。今天,我要向大家推荐一款专为计算机专业毕业生设计的面试工具——白瓜面试。 为什…...
数字IC开发:布局布线
数字IC开发:布局布线 前端经过DFT,综合后输出网表文件给后端,由后端通过布局布线,将网表转换为GDSII文件;网表文件只包含单元器件及其连接等信息,GDS文件则包含其物理位置,具体的走线࿱…...
高空作业未系安全带监测系统 安全带穿戴识别预警系统
在各类高空作业场景中,安全带是保障作业人员生命安全的关键防线。然而,由于人为疏忽或其他原因,作业人员未正确系挂安全带的情况时有发生,这给高空作业带来了巨大的安全隐患。为有效解决这一问题,高空作业未系安全带监…...
k8s的配置和存储(ConfigMap、Secret、Hostpath、EmptyDir以及NFS的服务使用)
ConfigMap 简介 在 Kubernetes 中,ConfigMap 是一种用于存储非敏感信息的 Kubernetes 对象。它用于存储配置数据,如键值对、整个配置文件或 JSON 数据等。ConfigMap 通常用于容器镜像中的配置文件、命令行参数和环境变量等。 ConfigMap 可以通过三种方…...
JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果
代码: <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…...
使用 Kafka 和 MinIO 实现人工智能数据工作流
MinIO Enterprise Object Store 是用于创建和执行复杂数据工作流的基础组件。此事件驱动功能的核心是使用 Kafka 的 MinIO 存储桶通知。MinIO Enterprise Object Store 为所有 HTTP 请求(如 PUT、POST、COPY、DELETE、GET、HEAD 和 CompleteMultipartUpload…...
力扣题86~90
题86(中等): python代码 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def partition(self, head: Optional[Li…...
【JavaEE】【多线程】定时器
目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器:就相当于一个闹钟,当我们定的时间到了,那么就执行一些逻辑。 1.1 Timer类 …...
CI/CD 的原理
一、CI/CD 的概念 CI/CD是一种软件开发流程,旨在通过自动化和持续的集成、测试和交付实现高质量的软件产品。 CI(Continuous Integration)持续集成 目前主流的开发方式是协同开发,即多位开发人员同事处理同意应用不同模块或功能。 如果企业在同一时间将…...
进一步认识ICMP协议
在日常工作中,我们经常需要判断网络是否连通,相信大家使用较多的命令就是 ping啦。ping命令是基于 ICMP 协议来实现的,那么什么是 ICMP 协议呢?ping命令又是如何基于 ICMP 实现的呢? 今天这篇文章,我们就来…...
NUUO网络视频录像机upload.php任意文件上传漏洞复现
文章目录 免责声明漏洞描述搜索语法漏洞复现nuclei修复建议 免责声明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 漏洞描述 NUUO网络视频录像机(Network Video Recorder࿰…...
WebGL 3D基础
1. 归一化函数 对一个向量进行归一化处理,即调整向量的模长(长度)为1,同时保持其方向不变。 // 归一化函数 function normalized(arr) {let sum 0;for (let i 0; i < arr.length; i) {sum arr[i] * arr[i];}const middle …...
Docker 部署MongoDb
1. 编写docker-compose.conf 文件 version: 3 services:mongo:image: mongo:latest # 指定 MongoDB 版本,确保 > 3.6container_name: mongo-replicarestart: alwayscommand: ["mongod", "--replSet", "rs0", "--oplogSize&…...
【Hadoop】hadoop的路径分不清?HDFS路径与本地文件系统路径的区别
/usr/local/hadoop /user/hadoop /home/hadoop/ 这里有些路径名很相似,帮我区分? 在Hadoop生态系统中,理解文件存储的位置对于有效管理数据至关重要。Hadoop分布式文件系统(HDFS)提供了一个高度可靠的存储系统…...
倪师学习笔记-天纪-易经八卦
一、简介 卦代表事情,爻代表时机,三爻为一卦八卦对应的天相,六十四卦对应人间事 二、八卦性 1、乾 天父亲向下看,无所求,雄心万丈始终如一,贞,坚心,专心至刚,天威&am…...
自动驾驶性能分析时,非常有用的两个信息
自动驾驶的关键路径如下,传感器的数据发送给感知模块;感知模块根据传感器数据来确定车辆所处的环境,比如前方有没有障碍物,是不是和车道线保持着适当的距离等;感知处理之后的数据传递给规控模块,规控根据车…...
深圳建设工程交易网站官网/百度广告大全
题意:给了一个矩阵图,要求使用回路把图中的树全部吃掉的方案树,没有树的点不能走,吃完了这个点也就没有了,走到哪吃到哪 用插头dp搞 #include <iostream> #include <algorithm> #include <cstdio> #include <…...
网站开发语言学习/搜索引擎优化的七个步骤
在小程序开发中,var that this的声明很常见。举个例子,代码如下! 示例代码1 //index.js Page({ data: { toastHidden: true, }, loadData: function () { var that this//这里声明了that;将this存在that里面 wx.request…...
wordpress 更新主题/网站排名查询工具
2019独角兽企业重金招聘Python工程师标准>>> 线程带来的风险 安全性问题 ----> 安全性的含义是“永远不发生糟糕的事” 线程安全问题非常复杂,在没有充分同步的情况下,多个线程中的操作顺序是无法预测的。 如果没有同步,那么无…...
山东城市建设职业学院教务网网站/杭州seo中心
1.表述hive和hadoop的关系: hive存储数据实在hdfs上,hive计算的底层使用的mapreduce,执行的程序运行在yarn上 2.hive的内部表和外部表的区别: 内部表删除数据会把元数据和数据都删除 外部表只删除元数据不会删除存储在hdfs上的数据…...
做旅游销售网站平台ppt/整合营销活动策划方案
如果营收阶段证明的是商业模式,那么规模化阶段证明的就是市场的大小。 中间的空洞 公司可重点关注某利基市场(市场细分策略),也可以追求更高的效率(低成本策略),或是试图变得与众不同…...
用rp怎样做网站/如何免费发布广告
HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。 这些新特性都有兼容性问题,基本是 IE9 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这 些新特性。 HTML5 新增的语义化标…...