gdb调试产生code文件以及遇到的“file format not recognized”问题解决

news2024/11/18 9:40:39

一、调试 core 文件的配置

1.1 开启core文件 —— ulimit

有时候,服务器程序运行一段时间后会突然崩溃,这并不是我们希望看到的,需要
解决这个问题。只要程序在崩溃的时候有 core 文件产生,就可以使用这个 core 文件
来定位崩溃的原因。当然,Linux 系统默认是不开启程序崩溃产生 core 文件这一机制
的,我们可以使用 ulimit -c 命令来查看系统是否开启了这一机制。发现 core file size 那一行默认是 0,表示关闭生成 core 文件。
在这里插入图片描述
如何开启
1)使用 ulimit -c unlimited(unlimited 是 -c 选项值)直接修改成不限制大小。
2)然后执行source /etc/profile即可立即生效。
3)再次查看 ulimit -c,结果为unlimited表示修改成功。
在这里插入图片描述

1.2 设置core文件生成地址

系统默认 corefile 是生成在程序的执行目录下或者程序启动调用了 chdir 之后的目录。我们可以通过设置生成 corefile 的格式来控制它,让其生成在固定的目录下
1)打开/etc/sysctl.conf

sudo vim /etc/sysctl.conf

2)在文件最后,写入 corefile 文件生成的目录

kernel.core_pattern=/home/zxm/codedump/core_%e_%p_%t

在这里插入图片描述
%e 所dump的文件名
%p 所dump的进程PID
%t 转储时刻(由1970年1月1日起计的秒数)

3)执行生效

sudo sysctl -p /etc/sysctl.conf

4)使用 cat 去查看路径是否生效

cat /proc/sys/kernel/core_pattern

在这里插入图片描述

1.3 测试

#include <stdio.h>

int main(void)
{
    printf("hello world! dump core for set value to NULL pointer/n");
    *(char *)0 = 0;
    return 0;
}

1)编译运行

gcc -g -o core_dump core_dump.c
./core_dump

结果是Segmentation fault

2)到/home/zxm/codedump,输入ll查看
在这里插入图片描述
3)有core文件,使用 gdb 进行调试。从结果看,提示出错位置在第6行

gdb ./core_dump /home/zxm/codedump/core_core_dump_2369_1689412339

在这里插入图片描述

1.4 无法产生code文件和file format not recognized报错

1)没有产生code文件
一开始调试的时候,并没设置路径。因为默认是程序运行的目录下,但是执行后没有产生。
在这里插入图片描述

2)file format not recognized报错
后面,设置的路径是/home/zxm/share/codedump,share是我的共享文件夹。这个时候报错

"/home/zxm/share/coredump/core_core_dump_2186" is not a core dump: file format not recognized

在这里插入图片描述
检查一下coredump,发现生成的code文件是0。那就是先前ulimit -c unlimited没设置成功。
在这里插入图片描述
3)解决办法
最后解决方法:不要把coredump创建在自己共享文件夹下。我这边修改到/home/zxm/codedump,再运行一次,就ok了;
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(王道)——线性表的存储结构之双链表

双链表和单链表的对比 一、从无到有创建一个双链表及其基础操作 带头结点 的双链表 初始化 双链表的后插操作&#xff1a; 从后插可以拓展到按位序插入&#xff0c;和前插操作。 因为双链表的特性&#xff0c;如果按位序插入或者前插操作&#xff0c;只需要找到插入的位置的前…

传统企业的数据管理:如何高效管理分散的数据?

在数字时代&#xff0c;数据管理已经成为一个重要的议题。大多数企业已经意识到数据是他们业务运营的重要组成部分。然而&#xff0c;许多传统企业还在使用过时的数据管理模式&#xff0c;这些模式并不具备高效管理分散数据的能力。随着企业的膨胀和数据规模的逐渐增加&#xf…

AI工程师:未来时代的主流工程师

自从以ChatGPT为主的人工智能&#xff08;AI&#xff09;大模型层出不穷&#xff0c;越来越多人开始意识到AI的潜力&#xff0c;甚至预测“所有行业都将通过AI来进行重塑”&#xff0c;正是基于该原因&#xff0c;各国各企业如火如荼建设AI事业&#xff0c;作为把AI造出来的AI工…

配合LaTex使用的“工具”

先介绍两个工具&#xff0c;比如公式的书写等&#xff0c;会大大提高书写论文的速度。 第一个&#xff1a;Mathpix Snip(生成公式)。官网&#xff1a;https://mathpix.com 【先去官网注册一个账号&#xff08;注册时遇到的问题见文章Mathpix上半部分&#xff09;然后去安装该软…

Python 列表 pop()函数使用详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 pop函数使用详解 1、按照索引删除元素1.1、正数索引1.2、负数索引1.3、不指定索引…

docker k8s

Docker docker到底与一般的虚拟机有什么不同呢&#xff1f; 我们知道一般的linux系统即GNU/Linux系统包括两个部分&#xff0c;linux系统内核GNU提供的大量自由软件&#xff0c;而centos就是众多GNU/Linux系统中的一个。 虚拟机会在宿主机上虚拟出一个完整的操作系统与宿主机完…

vue+openlayers 点击地图查询geoserver发布的WMS/WMTS图层的信息[矢量(点、线、面)+栅格]

一、基本介绍 网络地图服务 (WMS) 、网络地图切片服务 (WMTS) &#xff0c;根据用户的请求返回相应的地图&#xff08;包括PNG&#xff0c;GIF&#xff0c;JPEG等栅格形式或者是SVG和WEB CGM等矢量形式&#xff09;。 下面是常见的geoserver发布的图层格式&#xff0c;有矢量…

ODX(ISO22901)进阶——Intorduction to ODX

文章目录 前言一、Vehicle Diagnostic是什么?二、Diagnostic Data in ODX(诊断数据在ODX数据库)三、ODX企标概述(ODX Authoring Guidelines)总结前言 今天是2023年7月15日,距离2024年只剩下半年时间。伴随着各地疫情政策逐渐发开,三年的疫情终于迎来了不一样的变化。期…

AI绘画Stable Diffusion实战操作: 62个咒语调教-时尚杂志封面

今天来给大家分享&#xff0c;如何用sd简单的咒语输出好看的图片的教程&#xff0c;今天做的是时尚杂志专题&#xff0c;话不多说直入主题。 还不会StableDiffusion的基本操作&#xff0c;推荐看看这篇保姆级教程&#xff1a; AI绘画&#xff1a;Stable Diffusion 终极炼丹宝…

C++并发编程(1):基本概念、线程管控

学习视频与书籍 学习视频 c11并发与多线程视频课程 学习书籍 我本来打算去图书馆借《C新经典》的&#xff0c;偶然发现这本书&#xff0c;如获至宝 书挺新的&#xff0c;我看译者序是21年10月这本书挺贵的&#xff0c;后面写着139.80&#xff0c;大家还是去图书馆借吧作为基础…

Linux驱动之字符设备驱动框架与示例模板

目录 一、字符设备驱动简介 二、字符设备驱动开发步骤 1.确定设备号 2.定义 file_operations 结构体 3.实现操作函数 4.注册和注销字符设备 5.编译和加载模块 6.用户空间交互&#xff1a; 三、字符设备驱动示例模板 四、字符设备驱动开发总结 一、字符设备驱动简介 字…

未来Mac下载站怎么打不开了

重要公告&#xff1a; 未来软件园因业务需要现更换域名 原域名&#xff1a;Mac.orsoon.com 更为新域名&#xff1a;未来mac下载-Mac软件-mac软件下载-mac软件大全 程序已全面转移&#xff0c;请访问新域名

MySQL中的索引和事务 (数据库系列5)

目录 前言&#xff1a; 1.索引 1.1 索引的概念 1.2索引的作用 1.3索引的使用场景 1.4索引的使用 1.4.1查看索引 1.4.2创建索引 1.4.3删除索引 1.5索引背后的数据结构 1.5.1 B-树 1.5.2 B树 2.事务 2.1事务的概念 2.2数据库事务的四个特性 2.2.1原子性 2.2.2一…

城会玩,Selenium+Docker成功解决这一大难题

01、需求背景 日常测试中会遇到对web应用进行UI自动化的测试场景&#xff0c;一般常用的工具是使用Selenium&#xff0c;一套简单的UI自动化架构如下&#xff1a; 上图即为简单搭建的一套UI自动化测试架构&#xff0c;但 串行执行测试用例&#xff1a; 一台机器只能安装一个…

《英雄联盟》提示丢失D3DCompiler_43.dll的三个解决方法

在我们打开游戏《英雄联盟》的时候&#xff0c;计算机报错提示“由于找不到D3DCompiler_43.dll&#xff0c;无法继续执行此代码”&#xff0c;“D3DCompiler_43.dll丢失”是怎么回事呢&#xff1f;D3DCompiler_43.dll是一个Microsoft DirectX的组件文件&#xff0c;它是用于编译…

博客系统(使用前后端分离)

博客系统 前言一.准备工作1.1 准备好前端文件1.2 设计数据库1.3 编写基本的数据库代码1.4 封装好数据库的连接操作1.5 根据设计的表创建实体类1.6 根据实体类,提供一些简单的增删改查操作 二.博客要实现的功能2.1 博客列表页功能2.2 博客详情页2.3 博客登录页2.4 页面强制登录功…

涵子来信——AI的无限未来——谈谈想法

大家好&#xff1a; 这一次&#xff0c;我想要跟大家讲一讲我对AI的看法和未来的展望&#xff0c;谈谈我的想法。 AI&#xff08;Artificial Intelligence&#xff0c;中文人工智能&#xff09;&#xff0c;是我们生活中处处都可以见到的&#xff0c;小到一个语音助手&#x…

ylb-接口13实名认证

总览&#xff1a; 在api模块下的service包&#xff0c;创建一个充值接口RechargeService&#xff0c;并创建一个&#xff08;根据userID查询它的充值记录&#xff09;方法&#xff1a; package com.bjpowernode.api.service;import com.bjpowernode.api.model.RechargeRecord…

迪赛智慧数——柱状图(多色柱状图):旅行灵感来源

效果图 涉足旅行就是一次睿智的选择&#xff0c;心系未来、永不停步&#xff0c;让精神和思维得到滋养&#xff0c;更加懂得珍惜和感恩&#xff0c;这是旅行给予生活的灵感。西方一位哲人也说过&#xff0c;“生命的意义在于尝试&#xff0c;体验不同的可能”&#xff0c;旅行能…

基于springboot+Redis的前后端分离项目(九)-【黑马点评】

&#x1f381;&#x1f381;资源文件分享 链接&#xff1a;https://pan.baidu.com/s/1189u6u4icQYHg_9_7ovWmA?pwdeh11 提取码&#xff1a;eh11 附近的商户、用户签到、UV统计 &#xff08;一&#xff09;附近的商户1.附近商户-GEO数据结构的基本用法2.附近商户-导入店铺数据到…