coredump设置

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:95Thread 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:95Thread 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:95Thread 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:95Thread 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 btThread 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:95Thread 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:95Thread 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:95Thread 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:95Thread 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.rhkb.cn/news/444498.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python网络爬虫从入门到实战

目录 引言 一、网络爬虫的概念 二、 网络爬虫的基本工作流程 &#xff08;一&#xff09;过程&#xff1a; &#xff08;二&#xff09;安装requests模块和beautifulsoup4模块 &#xff08;三&#xff09;requests库的使用 1、requests库的基本介绍 2、导入requests库的…

深度学习:基于MindSpore实现ResNet50中药分拣

ResNet基本介绍 ResNet&#xff08;Residual Network&#xff09;是一种深度神经网络架构&#xff0c;由微软研究院的Kaiming He等人在2015年提出&#xff0c;并且在ILSVRC 2015竞赛中取得了很好的成绩。ResNet主要解决了随着网络深度增加而出现的退化问题&#xff0c;即当网络…

Chromium 中chrome.history扩展接口c++实现

一、前端 chrome.history定义 使用 chrome.history API 与浏览器的已访问网页的记录进行交互。您可以在浏览器的历史记录中添加、移除和查询网址。如需使用您自己的版本替换历史记录页面&#xff0c;请参阅覆盖网页。 更多参考&#xff1a;chrome.history | API | Chrome…

E. Expected Power (Codeforces 976 Div2)

这道题好难 原题 E. Expected Power 提示 Hint 1 试着找 f(S) 的期望值而不是 Hint 2 从f(S)的二进制表示中找规律来求 代码1 对答案代码做了注释 #include <bits/stdc.h> using namespace std;const int mod 1e97, N 2e5 10;// 最高只有1023, 小于等于2的10…

【论文阅读】Cross Attention Network for Few-shot Classification

用于小样本分类的交叉注意力网络 引用&#xff1a;Hou, Ruibing, et al. “Cross attention network for few-shot classification.” Advances in neural information processing systems 32 (2019). 论文地址&#xff1a;下载地址 论文代码&#xff1a;https://github.com/bl…

最新eclipse安装教程及安装包获取-附JDK安装

Eclipse简介 Eclipse 是一款开源的、功能强大、广泛应用的集成开发环境&#xff08;IDE&#xff09;&#xff0c;在软件开发领域占据着重要地位。 一、起源与发展 Eclipse 最初由 IBM 开发&#xff0c;2001 年以开源软件的形式发布。此后&#xff0c;它迅速吸引了全球众多开…

基于Python的在线音乐平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

发送邮件和随机码的生成

类视图和方法视图区别&#xff1a; 不需要装饰器&#xff0c;只需要继承MethodView,需要使用什么方式就写对应的方法名称&#xff0c;它就能自动匹配 app.route("/delete/",methods["DELETE"])这些就不用写了 但是不写装饰器并不意味着不写路由了&#xff…

毕设分享 大数据用户画像分析系统(源码分享)

文章目录 0 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…

Python入门笔记(四)

文章目录 第九章 集合set9.1 创建集合&#xff1a;set()、集合生成式9.2 集合性质9.3 一些函数&#xff1a;issubset()、issuperset()、isdisjoint()9.4 集合增加元素&#xff1a;add()、update()9.5 集合删除元素&#xff1a;remove()、discard()、pop()、clear()9.6 创建不能…

[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

引言 解码器Transformer的规模不断壮大&#xff0c;轻松达到千亿级参数。同时由于该规模&#xff0c;基于提示或微调在各种NLP任务上达到SOTA结果。但目前为止解码器Transformer还无法应用在语义搜索或语句嵌入上。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比…

企业如何制定适合自己的专利布局策略

在竞争激烈的市场环境中&#xff0c;专利布局对于企业的发展和竞争优势的建立至关重要。以下将分要点解析企业如何制定适合自己的专利布局策略。 1、明确企业的发展战略和市场定位 企业首先需要深入了解自身的长期发展规划和短期业务目标。明确是要通过技术创新来开拓新市场&am…

DSP CMD文件使用

背景描述: 在CCS编译代码时出现如下警告 解决方法: 找到cmd文件(这里是用的系统自动生成的)&#xff0c;在Section部分找到对应的核 #ifdef CORE7.text > CORE7_L2_SRAM.stack > CORE7_L2_SRAM.bss > CORE7_L2_SRAM.cio &g…

ARM base instruction -- umull

无符号乘法运算 Unsigned Multiply Long multiplies two 32-bit register values, and writes the result to the 64-bit destination register. 将两个32位寄存器值相乘&#xff0c;并将结果写入64位目标寄存器。 64-bit variant UMULL <Xd>, <Wn>, <Wm&g…

SQL第16课挑战题

1. 美国各州的缩写应始终用大写。更新所有美国地址&#xff0c;包括供应商状态&#xff08;Vendors表中的vend_state)和顾客状态&#xff08;customers表中的cust_state),使它们均为大写。 2. 第15课挑战题1要求将自己添加到customers表中&#xff0c;现在删除自己&#xff0c;…

AWS MySQL 升级(三)—— TAZ - 近0停机的小版本升级方案

与AWS交流了解到的新方案&#xff0c;没有实际试过&#xff0c;所以本篇主要是些原理 一、 TAZ的含义 TAZ实际上就是 3 AZ&#xff0c;扩展一些就是 Multi-AZ DB Cluster&#xff0c;即在3个可用区部署DB&#xff0c;具备两个只读备用实例。 二、 TAZ的主要用途 1. 近0停机的小…

Python和C++的差异在哪里

1.编程应用领域 C&#xff1a;广泛应用于系统级开发、嵌入式系统、游戏开发等领域。C的底层控制和高性能使其成为这些领域的理想选择。 Python&#xff1a;广泛应用于数据科学、Web开发、人工智能等领域。Python的简洁语法和强大库支持使其成为这些领域的首选语言。 2.语法风…

『网络游戏』制作提示弹窗UI【03】

将上一章的创建角色界面隐藏 创建一个空节点重命名为DynamicWnd 设置父物体为伸展 钉在中间创建一个Text文本组件 添加动画Animation组件 创建自定义动画Animation动画 点击创建 选择指定文件夹 拖拽至Animation 使用记录动画方式编辑动画首先点击红点录制 在第0帧设置文字透明…

文件夹访问被拒绝:深度解析、恢复策略与预防指南

一、文件夹访问被拒绝现象概述 在日常的电脑使用中&#xff0c;我们时常会遇到文件夹访问被拒绝的情况。这一现象通常表现为在尝试打开某个文件夹时&#xff0c;系统弹出权限不足的提示&#xff0c;阻止用户进行访问或操作。文件夹访问被拒绝不仅会影响用户的正常使用&#xf…

【YOLOv11】ultralytics最新作品yolov11 AND 模型的训练、推理、验证、导出 以及 使用

​目录 一 ultralytics公司的最新作品YOLOV11 1 yolov11的创新 2 安装YOLOv11 3 PYTHON Guide 二 训练 三 验证 四 推理 五 导出模型 六 使用 文档&#xff1a;https://docs.ultralytics.com/models/yolo11/ 代码链接&#xff1a;https://github.com/ultralytics/ult…