Ubuntu22.04设置程序崩溃产生Core文件

头图

Ubuntu22.04设置程序崩溃产生Core文件

文章目录

  • Ubuntu22.04设置程序崩溃产生Core文件
    • 摘要
    • Ubuntu 生成Core文件配置
      • 1. 检查 core 文件大小限制
      • 2. 设置 core 文件大小限制
      • 3. 配置 core 文件命名和存储路径
      • 4. 重启系统或重新加载配置
      • 5. 测试配置

关键字: UbuntuCoreCrash崩溃程序

摘要

最近程序总是崩溃,解决又毫无头绪,Windows下试尽各种工具都没法定位,只能将代码编译到Linux平台下尝试定位。今天就先研究下如何让程序崩溃是产生Core文件。

Ubuntu 生成Core文件配置

在 Ubuntu 系统中,配置程序崩溃时生成 core 文件通常涉及以下几个步骤:

1. 检查 core 文件大小限制

首先,你需要检查当前系统对 core 文件大小的限制。可以使用 ulimit 命令来查看和修改这个限制。

ulimit -c

如果输出为 0,表示当前没有设置生成 core 文件。

2. 设置 core 文件大小限制

你可以使用 ulimit 命令来设置 core 文件的大小限制。例如,设置为无限制:

ulimit -c unlimited

或者设置一个具体的大小,如 1024 MB:

ulimit -c 1024

注意,ulimit 命令的设置通常只在当前 shell 会话中有效。如果你希望永久生效,需要将设置添加到用户的 shell 配置文件中,如 ~/.bashrc~/.bash_profile

echo "ulimit -c unlimited" >> ~/.bashrc
source ~/.bashrc

3. 配置 core 文件命名和存储路径

默认情况下,core 文件可能会被存储在程序运行的当前目录下,并且命名可能不具有描述性。你可以通过修改 /proc/sys/kernel/core_pattern 来配置 core 文件的命名和存储路径。

例如,将 core 文件存储在 /var/cores/ 目录下,并使用程序名和进程ID来命名:

echo "|/usr/bin/sudo tee /var/cores/core.%e.%p" > /proc/sys/kernel/core_pattern

这里使用了管道符号 | 和一个命令,这个命令会将 core 文件的内容通过管道传递给 sudo tee 命令,从而将 core 文件写入到指定的路径。%e%p 是格式化字符,分别代表程序名和进程ID。

4. 重启系统或重新加载配置

对于某些更改,可能需要重启系统或重新加载配置才能生效。对于 ulimit 的更改,通常只需要重新登录或重新加载 shell 配置文件。对于 /proc/sys/kernel/core_pattern 的更改,可能需要重启系统。

5. 测试配置

为了测试配置是否生效,你可以故意触发一个程序崩溃。例如,编写一个简单的 C 程序,其中包含一个除以零的操作:

#include <stdio.h>

int main() {
    int a = 1;
    int b = 0;
    printf("%d\n", a / b);
    return 0;
}

编译并运行这个程序:

gcc -o crash_test crash_test.c
./crash_test

如果配置正确,你应该会在指定的路径下找到生成的 core 文件。

通过以上步骤,你可以在 Ubuntu 系统中配置程序崩溃时生成 core 文件,以便于调试和分析程序崩溃的原因。


博客签名2021

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

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

相关文章

跨平台之用VisualStudio开发APK嵌入OpenCV(一)

序 本篇是杂谈以及准备工作&#xff08;此处应无掌声&#xff09; 暂时不管iOS&#xff08;因为开发hello world都要年费&#xff09; 软件&#xff1a; Visual Studio 2019&#xff08;含Android SDK和NDK编译器等&#xff09; OpenCV 这是一个女仆级的系列文章&#xf…

代码随想录|Day56|动态规划 part16|● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 class Solution: def minDistance(self, word1: str, word2: str) -> int: dp [[0] * (len(word2) 1) for _ in range(len(word1) 1)] for i in range(len(word1) 1): dp[i][0] i for j in range(len(word2) 1): dp[0][j] j for i in rang…

OpenStack平台Nova管理

1. 规划节点 使用OpenStack平台节点规划 IP主机名节点192.168.100.10controller控制节点192.168.100.20compute计算节点 2. 基础准备 部署的OpenStack平台 1. Nova运维命令 &#xff08;1&#xff09;Nova管理安全组规划 安全组&#xff08;security group&#xff09;是…

网上比较受认可的赚钱软件有哪些?众多兼职选择中总有一个适合你

在这个互联网高速发展的时代&#xff0c;网上赚钱似乎成了一种潮流。但是&#xff0c;你是否还在靠运气寻找赚钱的机会&#xff1f;是否还在为找不到靠谱的兼职平台而苦恼&#xff1f; 今天&#xff0c;就为你揭秘那些真正靠谱的网上赚钱平台&#xff0c;让你的赚钱之路不再迷…

1107 老鼠爱大米

solution 记录每组的最大值&#xff0c;并比较组间的最大值胖胖鼠~ #include<iostream> using namespace std; int main(){int n, m, ans, fat -1, x;scanf("%d%d", &n, &m);for(int i 0; i < n; i){ans -1;for(int j 0; j < m; j){scanf(…

Docker compose 的方式一键部署夜莺

官方安装文档&#xff1a;https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/install/docker-compose/ 介绍&#xff1a;夜莺监控是一款开源云原生观测分析工具&#xff0c;采用 All-in-One 的设计理念&#xff0c;集数据采集、可视化、监控告警、数据分析…

python列表元素的增减之道:删除篇

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、前言 二、删除元素的基本方法 1. 使用remove()方法 2. 使用pop()方法 3. 使用del语句…

ICML 2024 | 北大、字节提出新型双层位置编码方案,有效改善长度外推效果

在这项工作中&#xff0c;我们利用语言序列的内在分段特性&#xff0c;设计了一种新的位置编码方法来达到更好的长度外推效果&#xff0c;称为双层位置编码&#xff08;BiPE&#xff09;。对于每个位置&#xff0c;我们的 BiPE 融合了段内编码和段间编码。段内编码通过绝对位置…

从用法到源码再到应用场景:全方位了解CompletableFuture及其线程池

文章目录 文章导图什么是CompletableFutureCompletableFuture用法总结API总结 为什么使用CompletableFuture场景总结 CompletableFuture默认线程池解析&#xff1a;ForkJoinPool or ThreadPerTaskExecutor&#xff1f;ForkJoinPool 线程池ThreadPerTaskExecutor线程池Completab…

AI教母李飞飞:现在的AI根本没有主观感觉能力

通用人工智能 (AGI) 是用来描述至少在人类展示&#xff08;或可以展示&#xff09;智能的所有方面都与人类一样聪明的人工智能代理的术语。这就是我们过去所说的人工智能&#xff0c;直到我们开始创建无可否认“智能”的程序和设备&#xff0c;但这些程序和设备只在有限的领域—…

查分数组总结

文章目录 查分数组定义应用举例LeetCode 1109 题「[航班预订统计] 查分数组定义 差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。 通过这个 diff 差分数组是可以反推出原始数组 nums 的&#xff0c;代码逻辑如下&#xff1a; int res[diff.size()]; // 根…

新建一个STM32的工程

一、SMT32开发方式 1、基于寄存器的方式&#xff1a;和51单片机开发方式一样&#xff0c;是用程序直接配置寄存器&#xff0c;来达到我们想要的功能&#xff0c;这种方式最底层、最直接、效率会更高一些&#xff0c;但是STM32的结构复杂、寄存器太多&#xff0c;所以不推荐基于…

HTTP协议、URL、HTTPS协议 ----- 讲解很详细

本章重点 理解应用层的作用, 初识HTTP协议 了解HTTPS协议 一、HTTP协议 1.认识url 虽然我们说&#xff0c;应用层协议是我们程序猿自己定的&#xff0c;但实际上&#xff0c;已经有大佬们定义了一些现成的&#xff0c;又非常好用的应用层协议&#xff0c;供我们直接参考使…

中国区 AWS 控制台集成 ADFS 登录

前言 本文将使用一台 Windows Server 2019 服务器实现自建 AD ADFS 环境集成到中国区 AWS 控制台进行单点登录. 参考文档: https://aws.amazon.com/cn/blogs/china/adfs-bjs/ 配置 AD 生产环境建议先给本地连接设置静态 IP 地址, 不设置也没事儿, 后面配置功能的时候会有 W…

excel表格写存神器--xlwt

原文链接&#xff1a;http://www.juzicode.com/python-tutorial-xlwt-excel 在 Python进阶教程m2d–xlrd读excel 中我们介绍了Excel表格的读取模块xlrd&#xff0c;今天这篇文章带大家了解Excel表格写存模块xlwt。他俩名字相近都以Excel的简写xl开头&#xff0c;rd是read的简写…

数字图像的几种处理算法

文章目录 1.二值化 2.海报化 3.灰度化 1)分量法 2)最大值法 3) 平均值法 4) 加权平均法 4.模糊化 1.二值化 二值化就是将图像划分成黑和白&#xff0c;通过设定一个标准&#xff08;如果大于这个标准就设为白&#xff0c;如果小于这个标准&#xff0c;就设为黑&#x…

布鲁可冲刺上市:极其依赖第三方,多个授权将到期,朱伟松突击“套现”

“奥特曼”概念股来了。 近日&#xff0c;布鲁可集团有限公司&#xff08;下称“布鲁可”&#xff09;递交招股书&#xff0c;准备在港交所主板上市&#xff0c;高盛和华泰国际为其联席保荐人。据贝多财经了解&#xff0c;布鲁可的经营主体为上海布鲁可科技集团有限公司。 天眼…

Kiwi浏览器 - 支持 Chrome 扩展的安卓浏览器

​【应用名称】&#xff1a;Kiwi浏览器 - 支持 Chrome 扩展的安卓浏览器 ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Kiwi ​【应用版本】&#xff1a;124.0.6327.2 ​【应用大小】&#xff1a;233MB ​【软件说明】&#xff1a;一款基于开源项目 Chr…

【Qt 学习笔记】Qt窗口 | 菜单栏 | QMenuBar的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt窗口 | 菜单栏 | QMenuBar的使用及说明 文章编号&#xff1a;Qt 学习…

Python 小游戏——贪吃蛇

Python 小游戏——贪吃蛇 文章目录 Python 小游戏——贪吃蛇项目介绍环境配置代码设计思路1. 初始化和变量定义2. 创建游戏窗口和FPS控制器3. 初始化贪吃蛇和食物的位置4. 控制贪吃蛇的方向和分数5. 主游戏循环 难点分析源代码呈现代码结果 项目介绍 贪吃蛇游戏是一款通过上下…