coredump设置

news2024/12/26 20:48:22

coredump路径查看及设置

  • coredump路径查看

命令1: cat /proc/sys/kernel/core_pattern

命令2: /sbin/sysctl kernel.core_pattern

  • coredump路径修改

临时修改:echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern

永久修改: /sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p

如果是ubuntu系统,上述设置方法不生效,因为ubuntu中默认开启了系统错误诊断,这项配置会阻止"echo /home/core-%e-%p >/proc/sys/kernel/core_pattern "的操作。需要做如下设置:

    • 关闭系统诊断
sudo vim /etc/default/apport
将文件中enabled设置为0
enabled=0
    • 修改/etc/sysctl.conf文件
vim /etc/sysctl.conf
kernel.core_pattern = /corefile/core-%e-%p-%t

重启后查看coredump路径,设置成功。

coredump size设置

查看coredump size

ulimit -c 返回0则不会生成coredump

ulimit -c unlimited 设置coredump长度,不限长

强制生成coredump

kill -6 pid会强制生成coredump

如dead_lock_demo.cc

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>

static int sequence1 = 0;
static int sequence2 = 0;

pthread_mutex_t lock1;
pthread_mutex_t lock2;

int func1(){
    pthread_mutex_lock(&lock1); 
    ++sequence1; 
    sleep(1); 
    pthread_mutex_lock(&lock2); 
    ++sequence2; 
    pthread_mutex_unlock(&lock2); 
    pthread_mutex_unlock(&lock1); 

    return sequence1; 
}

int func2(){
    pthread_mutex_lock(&lock2); 
    ++sequence2; 
    sleep(1); 
    pthread_mutex_lock(&lock1); 
    ++sequence2; 
    pthread_mutex_unlock(&lock1); 
    pthread_mutex_unlock(&lock2); 

    return sequence1; 
}


void* thread1(void *arg)
{
    int rev = 0;
    while(1){
        rev = func1();       
        if (rev == 100000){
            pthread_exit(NULL);
        }
    }
}

void* thread2(void *arg)
{
    int rev = 0;
    while(1){
        rev = func2();       
        if (rev == 100000){
            pthread_exit(NULL);
        }
    }
}

void* thread3(void *arg){
    int count = 0;
    while(1){
        sleep(1);
        if ( count++ > 10000){
            pthread_exit(NULL);
        }
    }
}

void* thread4(void *arg){
    int count = 0;
    while(1){
        sleep(1);
        if ( count++ > 10000){
            pthread_exit(NULL);
        }
    }
}

int main(){
    float a = 0.0334;
	float b = -0.0321;

	printf("abs(a)=%.4f,abs(b)=%.4f\n",fabs(a),fabs(b));
    pthread_t tid[4];    
    pthread_mutex_init(&lock1, NULL);
    pthread_mutex_init(&lock2, NULL);
    
    if(pthread_create(&tid[0], NULL, &thread1, NULL) != 0){
        _exit(1);
    }

    if(pthread_create(&tid[1], NULL, &thread2, NULL) != 0){
        _exit(1);
    }

    if(pthread_create(&tid[2], NULL, &thread3, NULL) != 0){
        _exit(1);
    }

    if(pthread_create(&tid[3], NULL, &thread4, NULL) != 0){
        _exit(1);
    }

    sleep(5);
    pthread_join(tid[0], NULL);
    pthread_join(tid[1], NULL);
    pthread_join(tid[2], NULL);
    pthread_join(tid[3], NULL);

    pthread_mutex_destroy( &lock1 );
    pthread_mutex_destroy( &lock2 );
    return 0;
}

执行g++ -Wall -std=c++11 dead_lock_demo.cc -o dead_lock_demo -g -pthread

运行

./dead_lock_demo

找到pid,kill -6 pid会生成coredump

调试coredump gdb dead_lock_demo core-dead_lock_demo

Thread 5 (Thread 0x7f883fb92700 (LWP 6840)):
#0  0x00007f884147a7a0 in __GI___nanosleep (requested_time=requested_time@entry=0x7f883fb91e90, remaining=remaining@entry=0x7f883fb91e90)
    at ../sysdeps/unix/sysv/linux/nanosleep.c:28
#1  0x00007f884147a67a in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#2  0x0000562321db4b37 in thread4 (arg=0x0) at dead_lock_demo.cc:73
#3  0x00007f884178e6db in start_thread (arg=0x7f883fb92700) at pthread_create.c:463
#4  0x00007f88414b771f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f8840393700 (LWP 6839)):
#0  0x00007f884147a7a0 in __GI___nanosleep (requested_time=requested_time@entry=0x7f8840392e90, remaining=remaining@entry=0x7f8840392e90)
    at ../sysdeps/unix/sysv/linux/nanosleep.c:28
#1  0x00007f884147a67a in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#2  0x0000562321db4afb in thread3 (arg=0x0) at dead_lock_demo.cc:63
#3  0x00007f884178e6db in start_thread (arg=0x7f8840393700) at pthread_create.c:463
#4  0x00007f88414b771f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f8840b94700 (LWP 6838)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f8841791025 in __GI___pthread_mutex_lock (mutex=0x562321fb6040 <lock1>) at ../nptl/pthread_mutex_lock.c:80
#2  0x0000562321db4a53 in func2 () at dead_lock_demo.cc:29
#3  0x0000562321db4ac8 in thread2 (arg=0x0) at dead_lock_demo.cc:53
#4  0x00007f884178e6db in start_thread (arg=0x7f8840b94700) at pthread_create.c:463
#5  0x00007f88414b771f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f8841395700 (LWP 6837)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f8841791025 in __GI___pthread_mutex_lock (mutex=0x562321fb6080 <lock2>) at ../nptl/pthread_mutex_lock.c:80
#2  0x0000562321db49ef in func1 () at dead_lock_demo.cc:17
#3  0x0000562321db4a9a in thread1 (arg=0x0) at dead_lock_demo.cc:42
#4  0x00007f884178e6db in start_thread (arg=0x7f8841395700) at pthread_create.c:463
#5  0x00007f88414b771f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f8841bb6740 (LWP 6836)):
#0  0x00007f884178fd2d in __GI___pthread_timedjoin_ex (threadid=140223186556672, thread_return=0x0, abstime=0x0, block=<optimized out>) at pthread_join_common.c:89
#1  0x0000562321db4cd3 in main () at dead_lock_demo.cc:106

从thread 堆栈信息看出,line17 ,line29发生死锁。

也可以不生成coredump调试,gdb attach pid (or sudo gdb attach pid)

thread apply all bt

和coredump一样的堆栈信息

(gdb) thread apply all bt

Thread 5 (Thread 0x7f648932e700 (LWP 6949)):
#0  0x00007f648ac167a0 in __GI___nanosleep (requested_time=requested_time@entry=0x7f648932de90, remaining=remaining@entry=0x7f648932de90)
    at ../sysdeps/unix/sysv/linux/nanosleep.c:28
#1  0x00007f648ac1667a in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#2  0x000056036b638b37 in thread4 (arg=0x0) at dead_lock_demo.cc:73
#3  0x00007f648af2a6db in start_thread (arg=0x7f648932e700) at pthread_create.c:463
#4  0x00007f648ac5371f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 4 (Thread 0x7f6489b2f700 (LWP 6948)):
#0  0x00007f648ac167a0 in __GI___nanosleep (requested_time=requested_time@entry=0x7f6489b2ee90, remaining=remaining@entry=0x7f6489b2ee90)
    at ../sysdeps/unix/sysv/linux/nanosleep.c:28
#1  0x00007f648ac1667a in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#2  0x000056036b638afb in thread3 (arg=0x0) at dead_lock_demo.cc:63
#3  0x00007f648af2a6db in start_thread (arg=0x7f6489b2f700) at pthread_create.c:463
#4  0x00007f648ac5371f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 3 (Thread 0x7f648a330700 (LWP 6947)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f648af2d025 in __GI___pthread_mutex_lock (mutex=0x56036b83a040 <lock1>) at ../nptl/pthread_mutex_lock.c:80
#2  0x000056036b638a53 in func2 () at dead_lock_demo.cc:29
#3  0x000056036b638ac8 in thread2 (arg=0x0) at dead_lock_demo.cc:53
#4  0x00007f648af2a6db in start_thread (arg=0x7f648a330700) at pthread_create.c:463
#5  0x00007f648ac5371f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 2 (Thread 0x7f648ab31700 (LWP 6946)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007f648af2d025 in __GI___pthread_mutex_lock (mutex=0x56036b83a080 <lock2>) at ../nptl/pthread_mutex_lock.c:80
#2  0x000056036b6389ef in func1 () at dead_lock_demo.cc:17
#3  0x000056036b638a9a in thread1 (arg=0x0) at dead_lock_demo.cc:42
#4  0x00007f648af2a6db in start_thread (arg=0x7f648ab31700) at pthread_create.c:463
#5  0x00007f648ac5371f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7f648b352740 (LWP 6945)):
#0  0x00007f648af2bd2d in __GI___pthread_timedjoin_ex (threadid=140069800449792, thread_return=0x0, abstime=0x0, block=<optimized out>) at pthread_join_common.c:89
#1  0x000056036b638cd3 in main () at dead_lock_demo.cc:106

gdb attach生成coredump

先gdb attach pid

然后generate-core-file/gcore coredump_file_name即可生成coredump file。

参考

设置coredump存储路径_coredump 路径-CSDN博客 [1]

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

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

相关文章

基于Java的企业仓库管理系统的设计与实现(论文+源码)_kaic

摘 要 随着信息技术的不断发展&#xff0c;以及网络技术的广泛用&#xff0c;企业企业仓库存储的信息量也越来越大&#xff0c;信息变得复杂。基于人工的数据收集方式&#xff0c;在耗费大量人力的同时也降低了信息采集的效率&#xff0c;例如影响了信息正确率和信息的录入速度…

项目解决方案:连锁店视频监控接入汇聚联网解决方案

目录 一.项目背景 二.建设目标和详细需求分析 2.1建设总目标 2.2需求分析 三.系统特色 3.1数字&#xff0c;高清&#xff0c;网络化系统 3.2安全性 3.3可拓展性 3.4资源利旧&#xff0c;节约成本 四.系统实现 4.1系统方案设计 4.2拓扑组网说明 4.3用户权限管理实现…

Assignment 1 (10月12日截止)

Section 1.1 T12 &#x1f609; S o l v e &#x1f447; Solve&#x1f447; Solve&#x1f447; x x x 1 1 1- 3 x 3x 3x 2 2 2 4 x 4x 4x 3 3 3 − 4 -4 −4 3 x 3x 3x 1 1 1 − 7 x -7x −7x 2 2 2 7 x 7x 7x 3 3 3 − 8 -8 −8 − 4 x -4x −4x 1 1 1 6 x 6x 6x…

yarn install 报错 Expected version “>=18“,Got “16.20.0“

项目在初始化 (yarn install),一直报错以下信息&#xff0c;切换node 版本无法修改 1、首先使用命令检查&#xff0c;strict-ssl 是否为true和ignore-engines是否为false yarn config list2、如果不为 1 描述的值&#xff0c;使用以下命令设置 yarn config set strict-ssl t…

20241011给华硕的FX607JVCPU安装WIN10【intel的13代酷睿】

20241011给华硕的FX607JVCPU安装WIN10【intel的13代酷睿】 2024/10/11 17:55 缘起&#xff1a;同事新买的华硕笔记本电脑&#xff0c;WIN11的&#xff0c;需要降级为WIN10。 使用U盘安装WIN10的时候&#xff0c;常见现象&#xff1a;安装的时候找不到固态硬盘。 电脑使用的是&a…

推荐一个边缘物联网平台

AIoTedge是一个AIoT边缘物联网计算平台&#xff0c;它结合了边缘计算、物联网平台和泛协议软网关的功能。这个平台采用边云协同的架构&#xff0c;可以在多个点部署&#xff0c;与IoT云平台配合使用&#xff0c;提供分布式的AIoT处理能力。这种架构特别适用于需要AI云端训练和本…

HTTP代理的优点和局限性

在这个信息爆炸的时代&#xff0c;网络已成为我们获取知识、交流思想、开展商务的重要平台。但随之而来的隐私泄露、网络安全威胁、以及无处不在的网络监控&#xff0c;却让我们的每一次在线活动都充满了风险。 在这样的背景下&#xff0c;HTTP代理技术应运而生&#xff0c;它不…

歌曲怎样去掉人声留伴奏?教你几招,瞬间去除歌曲人声

在数字音乐时代&#xff0c;对音频进行编辑和处理已成为一种常见的需求。其中&#xff0c;将歌曲中的人声去除&#xff0c;仅保留伴奏部分&#xff0c;是许多音乐爱好者和创作者经常面临的任务。无论是为了制作卡拉OK伴奏&#xff0c;还是进行音乐混音和再创作&#xff0c;掌握…

养宠人崩溃的季节又到了,有什么吸浮毛宠物空气净化器推荐?

害&#xff0c;怎么转眼又到秋天了&#xff0c;猫咪又迎来了换毛期。这段时间我撸猫都不敢用力&#xff0c;随便摸摸就能带下满手的毛发&#xff0c;都可以做成毛毡了。我家猫还贼活泼&#xff0c;每天下班扑向我&#xff0c;还没能来得及换衣服&#xff0c;又收获一身满满的猫…

IC开发——数字电路设计简介

1. 前言 我们说的数字电路&#xff0c;一般是指逻辑数字电路&#xff0c;即通过逻辑门组合成的电路&#xff0c;也即我们常说的逻辑IC。IC除了逻辑IC之外&#xff0c;还有模拟IC&#xff0c;存储IC等。 IC设计&#xff0c;需要学习数字电路&#xff0c;需要学习Verilog/VHDL等…

TypeError: Cannot read properties of undefined (reading ‘offsetHeight’)

TypeError: Cannot read properties of undefined (reading ‘offsetHeight’) 前端报错 TypeError: Cannot read properties of undefined (reading offsetHeight)错误通常意味着你试图访问一个未定义或尚未渲染到DOM中的元素的offsetHeight属性。这个错误常见于异步数据处理、…

DAPLINK 之仿真调试器介绍

文章目录 前言1 协议1.1 JTAG 协议1.2 SWD 协议 2 调试仿真器2.1 ST-Link 仿真器2.2 ULink 仿真器2.3 J-Link 仿真器2.4 DAPLINK 仿真器 3 LINKer 搭配 CLion 的使用3.1 ST-Link CLion STM32F103RCT63.2 DAPLINK CLion STM32F103RCT6 参考 前言 本文算是 DAPLINK 学习的一个…

PyQt5 的 designer.exe 使用布局详解

文章目录 采用designer.exe原因一、打开 designer.exe二、界面布局介绍1. 菜单栏和工具栏2. 组件面板3. 窗体设计区域4. 属性编辑器5. 信号 / 槽编辑器 三、示例代码及图片展示 采用designer.exe原因 Python使用PyQt5界面开发为啥不使用py文件创建而是采用designer.exe原因&…

通过redis实现高性能计费处理逻辑

计费服务一般都是跟资金相关&#xff0c;所以它在系统中是非常核心的模块&#xff0c;要保证服务的高可用、事务一致性、高性能。服务高可用需要集群部署&#xff0c;要保证事务一致性可以通过数据库来实现&#xff0c;但是只通过数据库却很难实现高性能的系统。 这篇文章通过使…

人工智能——引领未来的科技革命

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为我们生活中不可或缺的一部分。从智能手机的语音助手到自动驾驶汽车&#xff0c;从智能家居到工业自动化&#xff0c;AI的应用正在不断拓展&#xff0c;其影响力也在持续增强。今天&#xff0c;我们将…

图像的两种结构

彩色图像数据 (color_image_data) 彩色图像数据是一个三维数组&#xff0c;其中每个维度分别对应&#xff1a; 高度&#xff1a;图像的行数。宽度&#xff1a;图像的列数。颜色通道&#xff1a;每个像素的颜色信息&#xff0c;通常为RGB三个通道。 例如&#xff0c;一个3x3像…

【进阶】面向对象之权限修饰符代码块

文章目录 权限修饰符权限修饰符的使用规则 代码块分类局部代码块(了解就行)构造代码块(了解就行)静态代码块(重点) 权限修饰符 权限修饰符的使用规则 成员变量私有方法公开 特例&#xff1a; 如果方法中的代码是抽取其他方法中共性代码&#xff0c;这个方法一般也私有. 代码…

智诊小助手TF卡记录文件导出

若想将TF卡中记录的数据文件导出可按以下的流程进行配置&#xff1a; 点击主界面中的导出选项即可进入到下图中TF卡应用界面 点击TF卡应用界面中“查看记录文件”的选项&#xff0c;进入导出文件界面。 …

南科大分享|大数据技术如何赋能大模型训练及开发

嘉宾介绍 张松昕&#xff0c;南方科技大学统计与数据科学系研究学者&#xff0c;UCloud 顾问资深算法专家&#xff0c;曾任粤港澳大湾区数字经济研究院访问学者&#xff0c;主导大模型高效分布式训练框架的开发&#xff0c;设计了 SUS-Chat-34B 的微调流程&#xff0c;登顶 Ope…

什么是iPaaS?iPaaS选型、落地及案例分析

在iPaaS行业摸爬滚打已经8个年头了。从最初的技术支持做起&#xff0c;到现在负责整个集成项目的规划和实施&#xff0c;我见证了iPaaS技术在国内的快速发展。今天&#xff0c;我想和大家深入聊聊iPaaS这个话题&#xff0c;希望能给正在考虑数字化转型的企业一些参考。 什么是…