gdb调试使用记录
使用 GDB(GNU Debugger)进行问题排查是非常有效的。且可以通过core文件进行排查bug,core文件是程序异常崩溃的时候(段错误,非法指令等),系统自动生成的core文件。用户可以通过core文件配合gdb调试命令,调试程序异常崩溃的原因,修复相应的bug。core文件生成需要通过ulimit -c命令来查看和配置,当显示为0时,表示系统不会生成core文件,这个时候我们需要配置相应的环境,使系统可以在程序异常崩溃的时候,生成core文件。
可通过如下命令设置core文件大小和输出位置
ulimit -c unlimited
临时生效则是使用echo命令将想要的格式写入到该文件中,比如
echo ‘/usr/core -%e -%p -%t' > /proc/sys/kernel/core_pattern
/usr/core: 指定核心转储文件的存储目录。-%e: 代表崩溃程序的可执行文件名。-%p: 代表崩溃进程的进程ID。-%t: 代表崩溃发生的时间戳。
下面记录下GDB的简单排查问题实用
1. 启动 GDB
在终端中,输入以下命令来启动 GDB:
gdb ./your_program
2. 设置断点
你可以在程序的某个函数或者行号设置断点:
break main # 在 main 函数处设置断点
break filename.c:line_number # 在特定文件的特定行设置断点
3. 运行程序
输入命令开始运行程序:
run
4. 程序暂停
当程序运行到断点处时,会暂停,显示当前状态。
5. 检查变量
使用以下命令查看变量的值:
print variable_name # 打印变量的值
6. 单步调试
逐步执行代码:
next:执行下一行(不进入函数内部)step:执行下一行(进入函数内部)
7. 继续执行
如果需要继续执行到下一个断点,可以使用:
continue
8. 查看调用栈
如果程序崩溃,可以查看调用栈:
backtrace
9. 退出 GDB
使用以下命令退出 GDB:
quit
10. 其他有用命令
list:查看当前执行代码附近的源代码。info locals:查看当前函数中的所有局部变量。watch variable_name:监视某个变量的变化。
下面是使用 GDB 调试的示例步骤:
编译程序时加上调试信息:
gcc -g -o my_program my_program.c
启动 GDB:
gdb ./my_program
设置断点和运行:
break main
run
使用 next 或 step 逐步调试,查看变量值。
使用 GDB 排查 core 文件的基本步骤如下:
准备环境: 确保你的程序在编译时使用了调试信息。可以通过添加 -g 标志来编译你的代码,例如:
gcc -g -o my_program my_program.c
生成 Core 文件:
运行程序并使其崩溃,通常可以通过设置环境变量 ulimit 来确保生成 core 文件:
ulimit -c unlimited
./my_program
使用 GDB 加载 Core 文件: 使用 GDB 加载你的程序和生成的 core 文件:
gdb ./my_program core
查看崩溃信息: 在 GDB 中,你可以使用以下命令来查看崩溃时的堆栈信息:
(gdb) bt
检查变量值: 你可以查看特定变量的值:
(gdb) print variable_name
导航源代码: 使用 list 命令查看崩溃位置附近的代码:
设置断点: 你可以在特定函数或行上设置断点,以便进一步调试:
(gdb) break function_name
继续执行: 如果想从某个点继续执行,可以使用:
(gdb) continue
退出 GDB: 调试完成后,使用以下命令退出:
(gdb) quit
相关文章:
gdb调试使用记录
使用 GDB(GNU Debugger)进行问题排查是非常有效的。且可以通过core文件进行排查bug,core文件是程序异常崩溃的时候(段错误,非法指令等),系统自动生成的core文件。用户可以通过core文件配合gdb调试命令,调试…...
ESXi安装【真机和虚拟机】(超详细)
项目简介: ESXi(Elastic Sky X Integrated)是VMware公司开发的一种裸机虚拟化管理程序,允许用户在单一物理服务器上运行多个虚拟机(VM)。它直接安装在服务器硬件上,而不是操作系统之上ÿ…...
基于SpringBoot+Vue的高校门禁管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 精品专栏:Java精选实战项目源码、Python精…...
【Linux-基础IO】C语言文件接口回顾 系统文件概念及接口
目录 一、C语言文件接口回顾 C语言基础知识 C中文件操作示例 二、系统文件概念及接口 重定向基本理解的回顾 文件的基本概念 系统调用接口 open read write close lseek 什么是当前路径 一、C语言文件接口回顾 引言:我们并不理解文件!从语…...
系统架构笔记-3-信息系统基础知识
知识要点 结构化方法:结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析、结构化设计、结构化程序设计三部分有机组合而成,精髓是自顶向下、逐…...
Linux下编程实现网络传送文件
本程序是在Linux下开发的,使用的是C语言,再结合Socket进行编程,分为客户端和服务器两个程序,即采用的是C/S架构,相应的源代码如下: 服务器端: #include <stdio.h> //#include <stdlib.h> #include <sys/socket.h> #include <netinet/in.h&g…...
【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
前言: 前三篇如下: 【速成Redis】01 Redis简介及windows上如何安装redis-CSDN博客 【速成Redis】02 Redis 五大基本数据类型常用命令-CSDN博客 【速成Redis】03 Redis 五大高级数据结构介绍及其常用命令 | 消息队列、地理空间、HyperLogLog、BitMap、…...
SQL Server 2022的数据类型
新书速览|SQL Server 2022从入门到精通:视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通(视频教学超值版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) 数据类…...
Linux基础3-基础工具4(git),冯诺依曼计算机体系结构
上篇文章:Linux基础3-基础工具3(make,makefile,gdb详解)-CSDN博客 本章重点: 1. git简易使用 2. 冯诺依曼计算机体系结构介绍 目录 一. git使用 1.1 什么是git? 1.2 git发展史 1.3 git创建仓库 1.4 git命令操作 二. 冯诺依…...
后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0916)
接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 接口根路径: http://big-event-vue-api-t.itheima.net 本项目的技术栈 本项目技术栈基于 ES6、vue3、pinia、vue-router 、vite 、axios 和 element-plus http:/…...
MySQL基础篇(黑马程序员2022-01-18)
1 MySQL数据库概述 1.1 MySQL数据库的下载,安装,启动停止 1.2 数据模型 (1)关系型数据库(RDBMS) 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: A. 使用表存储数据,格式统一,便于维护。…...
nodejs 013:Prect 样式复用(multiple classes)例子
Prect 简单示例 Prect 为使用相同的现代 API 的快速 3kB React 替代方案。代码形式与 React 基本相同。部分语法区别可见 prect-differences-to-react。以下是一个 Prect 简单示例。 Button目录Button.css: .this {display: inline-block;padding: 3px 8px;margi…...
MQ入门(一):同步调用和异步调用--RabbitMQ基础入门
目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.安装部署 2.2.RabbitMQ基本架构 2.3.收发消息 2.3.1.交换机 2.3.2.队列 2.3.3.绑定关系 2.3.4.发送消息 2.4.数据隔离 2.4.1.用户管理 2.4.2.virtual host 1.初识MQ 微服务一旦拆分&…...
由于安全风险,安全领导者考虑禁止人工智能编码
安全团队与开发团队之间的紧张关系 83% 的安全领导者表示,他们的开发人员目前使用人工智能来生成代码,57% 的人表示这已成为一种常见做法。 然而,72% 的人认为他们别无选择,只能允许开发人员使用人工智能来保持竞争力࿰…...
地图相关的系统软件及插件
1 ArcGis ArcGis For Javascript中文网站 首页 | ArcGis中文网 ArcGis For Javascript英文网站 ArcGIS是一款由Esri公司开发的地理信息系统软件,它提供了丰富的地图数据和分析工具,可以帮助用户进行各种空间分析和决策。 2 leaflet leaflet中文网站…...
Elasticsearch如何排序,分页以及高亮查询
目录 一、排序 二、分页查询 三、高亮查询 一、排序 ES中默认使用相关度分数实现排序,可以通过搜索语法定制化排序。 GET /索引/_search { "query": 搜索条件,"sort": [{"字段1":{"order":"asc"} },{ "字…...
Transformer预测 | 基于Transformer心率时间序列预测(tensorflow)
效果一览 基本介绍 Transformer预测 | 基于Transformer心率时间序列预测(tensorflow) 程序设计 import pandas as pd from pandas.plotting import lag_plot from statsmodels.graphics...
科研绘图系列:R语言误差连线图(errobar linechart)
文章目录 介绍加载R包导入数据数据预处理画图系统信息介绍 误差连线图是一种在数据可视化中常用的图表,它通过在数据点处添加线段(误差线)来表示数据的变异性或不确定性。这些误差线可以基于不同的统计度量,如标准差(Standard Deviation)、标准误差(Standard Error)或…...
智能BI项目第五期
本期主要内容 系统问题分析异步化业务流程分析线程池讲解(入门 原理 实战)系统异步化改造开发 1.系统问题分析 当系统面临大量用户请求时,我们后端的 AI 处理能力有限,例如服务器的内存、CPU、网络带宽等资源有限,…...
Android-UI设计
控件 控件是用户与应用交互的元素。常见的控件包括: 按钮 (Button):用于执行动作。文本框 (EditText):让用户输入文本。复选框 (CheckBox):允许用户选择或取消选择某个选项。单选按钮 (RadioButton):用于在多个选项中…...
从iptables迁移到nftables:表/链/规则的对照操作指南(含性能对比)
从iptables到nftables的平滑迁移实战指南 在Linux网络安全管理领域,防火墙技术的演进从未停歇。对于已经熟悉iptables的中高级用户而言,nftables的出现既是挑战也是机遇。作为Netfilter项目的新一代防火墙框架,nftables不仅统一了IPv4/IPv6防…...
PingFangSC字体实战指南:从基础配置到性能优化全攻略
PingFangSC字体实战指南:从基础配置到性能优化全攻略 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC PingFangSC(苹果平方简体&am…...
HOOI算法里的‘skip’参数到底在干嘛?深入TensorLy源码讲透Tucker分解迭代过程
HOOI算法中的skip参数机制解析:从数学原理到TensorLy实现 当你在实现高阶正交迭代(HOOI)算法进行Tucker分解时,是否曾被multi_mode_dot函数中那个神秘的skip参数困扰过?这个看似简单的参数背后,实际上隐藏着…...
Libero SoC v2021.1离线安装全攻略:从下载到IP核配置(附避坑指南)
Libero SoC v2021.1离线安装全攻略:从下载到IP核配置(附避坑指南) 在企业内网开发环境中,离线安装EDA工具往往面临诸多挑战。本文将手把手指导您完成Libero SoC v2021.1的完整离线部署流程,涵盖从安装包获取到IP核配置…...
学网络安全需要学编程吗?
作为数字化时代的守护者岗位,网络安全一直备受瞩目并引发热议,那么学网络安全需要学编程吗?学多久才可以就业?我们通过这篇文章来了解一下。学网络安全需要学编程吗?当然需要,网络安全需要学习编程。编程能力是网络安全领域的基础技能之一…...
Umi-OCR服务化集成方案:构建企业级OCR自动化工作流的技术实现
Umi-OCR服务化集成方案:构建企业级OCR自动化工作流的技术实现 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.c…...
基于COMSOL光学仿真的光子晶体光纤与微纳光学研究
comsol光学仿真光子晶体光纤,comsol光学方方向COMLOS微纳光学,仿真双芯光子晶体光,锥形光纤 光子晶体光光纤滤波器等,bpm,rsoft,fullware,论文复现在光学仿真领域,COMSOL Multiphysi…...
3大核心优势!Steamless开源工具链实现高效游戏文件DRM移除
3大核心优势!Steamless开源工具链实现高效游戏文件DRM移除 【免费下载链接】Steamless Steamless is a DRM remover of the SteamStub variants. The goal of Steamless is to make a single solution for unpacking all Steam DRM-packed files. Steamless aims to…...
OpenClaw 的模型服务是否支持基于策略的流量控制?
关于OpenClaw模型服务是否支持基于策略的流量控制,这个问题其实触及了现代AI服务部署中一个相当核心的环节。直接说结论的话,答案是肯定的,但更值得探讨的是它具体如何实现,以及这种支持在实际场景中意味着什么。 在技术架构层面&…...
永磁同步电机参数辨识:EKF算法的奇妙之旅
卡尔曼滤波EKF算法,针对于永磁同步电机的电阻、电感等参数的辨识,辨识速度快,效果好,适合入门童鞋参考学习:本商品 包含以下内容: (1)采用SVPWM矢量控制; (2&…...
