linux 下coredump 生成及调试分析

news2024/9/25 11:13:02

Windows环境崩溃问题(dump)可根据vs调试或windbg工具查看.linux环境崩溃文件为core文件,可以使用gdb进行调试分析。

前提:都是都是用了root权限的用户操作。

1.生成core文件的前提

产生coredump的条件,首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置。 

ulimit  -c unlimited  (可以产生coredump且不受大小限制),这种设置仅对当前生效。

如果想永久生效。那么需要在/etc/profile中加入以下一行。具体操作: vim /etc/profile,然后进入编辑模式,在profile文件中加入ulimit -c unlimited   保存退出,重启服务器,改文件就长久生效,或者#source /etc/profile,不重启服务器,使用source使文件马上生效。

2.更改core dump生成路径

因为core dump默认会生成在程序的工作目录,但是有些程序存在切换目录的情况,导致core dump生成的路径没有规律,所以最好是自己建立一个文件夹,存放生成的core文件。

建立一个 /data/coredump 文件夹,在根目录data里的coredump文件夹。

调用如下命令

echo /data/coredump/core.%e.%p  >  /proc/sys/kernel/core_pattern

将更改core文件生成路径,自动放在这个/data/coredump文件夹里。

 对应参数意义说明: 
%p - insert pid into filename 插入当前的pid 
%u - insert current uid into filename 插入当前的uid 
%g - insert current gid into filename 插入当前的gid 
%s - insert signal that caused the coredump into the filename 插入导致产生core文件的信号 
%t - insert UNIX time that the coredump occurred into filename 插入core文件生成时的时间 
%h - insert hostname where the coredump happened into filename 插入主机名 
%e - insert coredumping executable name into filename 插入程序名
 

3测试生成core文件

#include <stdio.h>
int main()
{
    int* p = NULL;
    *p = 0;
    return 0;
}

a. 编译代码生成可执行程序。 编译的时候带上-g选项,这样才能用gdb调试core

g++ -g w.cpp -o www

b.运行可执行程序。会出现核心已转储,表明已生成core文件。注意我只有使用root权限用户才出现核心已转储(即才生成core文件)

root@gxrong-virtual-machine:/home/gxrong/qt# g++ -g w.cpp -o www 
root@gxrong-virtual-machine:/home/gxrong/qt# ./www
段错误 (核心已转储)

4.使用gdb调试core文件

a. 执行 gdb 可执行程序exe

root@gxrong-virtual-machine:/home/gxrong/qt#  gdb www
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from www...done.

b. 执行 core-file  core的名字

(gdb) core-file coredump
[New LWP 2199]
Core was generated by `./www'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00005604710ed60a in main () at w.cpp:5
5	    *p = 0;
(gdb) 

注意:如果是简单的程序,其实可以把上面的a、b步骤合并成一步执行即可。

#gdb 程序名  core文件名

gdb w /data/coredump/core.w.2893

c.敲bt命令,这是gdb查看back trace的命令

(gdb) bt
#0  0x00005604710ed60a in main () at w.cpp:5
(gdb) 

完整的过程

gxrong@gxrong-virtual-machine:~/qt$ su root
密码: 
root@gxrong-virtual-machine:/home/gxrong/qt# ulimit -c
0
root@gxrong-virtual-machine:/home/gxrong/qt# ulimit -c unlimited 
root@gxrong-virtual-machine:/home/gxrong/qt# g++ -g w.cpp -o w
root@gxrong-virtual-machine:/home/gxrong/qt# ./w
段错误 (核心已转储)
root@gxrong-virtual-machine:/home/gxrong/qt# gdb w /data/coredump/core.w.2893
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from w...done.
[New LWP 2893]
Core was generated by `./w'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000055570ac5c60a in main () at w.cpp:5
5	    *p = 0;
(gdb) bt
#0  0x000055570ac5c60a in main () at w.cpp:5
(gdb) 

延伸:

linux + qt 环境下生成core文件

1.在pro 配置添加 (好像不用配置也可以)

QMAKE_CC += -g
QMAKE_CXX += -g
QMAKE_LINK += -g

 其他的步骤和一般的linux程序一样。都是 设置ulimit -c unlimited 、更改core文件、运行可执行程序生成core文件。

linux + qt 环境下调试core文件

第一种办法:和一般linux程序一样,通过gdb调试。

第二种办法:使用qt creator

1、Debug->Start Debugging->Load Core File

2、在弹出的窗口选择对应的文件
3、点击OK,开始调试,会看到code里的信息

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

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

相关文章

优化改进YOLOv5算法之添加RepVGG模块(超详细)

在前面的文章中已经详细介绍了在本机上安装YOLOv5的教程&#xff0c;安装YOLOv5可参考前面的文章YOLOv5训练自己的数据集(超详细)https://blog.csdn.net/qq_40716944/article/details/118188085 目录 1、RepVGG原理 1.1 模型定义 1.2 为什么要用VGG式模型 1.3 结构重参数化…

基于ssm+mysql+jsp实现水果蔬菜商城系统

基于ssmmysqljsp实现水果商城系统一、系统介绍1、系统主要功能&#xff1a;2、环境配置二、功能展示1.主页(客户)2.登陆&#xff08;客户&#xff09;3.我的购物车(客户)4.我的订单&#xff08;客户&#xff09;5.主页&#xff08;管理员&#xff09;6.订单管理&#xff08;管理…

python寻找男厕所小便池的最佳站位

题目描述 相信我&#xff0c;每一个人内在都是有精神洁癖的。尤其是在题目所在的场景中。 下面我们就用一个算法来衡量一下&#xff01;&#xff01;&#xff01; 在考场里&#xff0c;一排有 N 个座位&#xff0c;分别编号为 0, 1, 2, …, N-1 。 当学生进入考场后&#xff0…

Python利用pandas读取Excel某列为键某几列为列表类型的值

在日常的办公中&#xff0c;我们经常要处理表格之间的数据匹配&#xff0c;会经常用到VLOOKUP函数&#xff0c;那么在Python中可以把VLOOKUP函数转换为字典&#xff0c;在转换成本地json文件&#xff0c;这样不仅可以匹配大批量数据&#xff0c;而且速度也会变快。 今天我们要…

第二十六讲:神州路由器PPP PAP认证的配置

实验拓扑图如下所示 操作步骤&#xff1a; 步骤1&#xff1a;连接网络拓扑图。 步骤2&#xff1a;RouterA基本配置。 router>enable &#xff01;进入特权模式 router#config &#xff01;进入全局配置模式 router_config#hostname RouterA …

移植RT-thread Nano完成一个 modbus接口的温湿度Slave设备,让上位机PC通过modbus协议获取温湿度

文章目录前言一、移植RT-thread Nano1、STM32CubeMX 安装 RT-Thread2、Keil安装RT-Thread二、STM32CubeMX 创建工程1.添加RT-Thread组件2、配置项目三、keil配置1、ANT20配置2、移植freeModebusRTU3、代码配置四、总结五、参考资料前言 硬件&#xff1a;stm32f103c8t6 核心板软…

springcloud+nacos+gateway+oauth2+jwt再相聚

在springcloud微服务架构下&#xff0c;如何进行统一的认证、鉴权&#xff0c;一直是大家非常关心的问题&#xff0c;下面对微服务架构下的认证和鉴权继续聊聊&#xff0c;一是自己的再次思考总结&#xff0c;二是希望对小伙伴有所帮助。 1、方案思路 在springcloud微服务中&am…

React学习08-React Redux

Redux Redux理解 redux是一个专门用于做状态管理的JS库(不是react插件库)。可以用在React, Angular, Vue等项目中, 但基本与React配合使用。作用: 集中式管理React应用中多个组件共享的状态。Redux只负责管理状态 文档 英文文档 中文文档 Github 需要使用Redux的情况…

2023跨年烟花(浪漫烟花+美妙音乐+雪花飘飘)含前端源码直接下载---系列最终篇

2023年快要到来啦&#xff0c;很高兴这次我们又能一起度过~ 特辑最终篇&#xff01;&#xff01;&#xff01; 视觉中国 目录 一、前言 二、跨年烟花 三、效果展示 四、详细介绍 五、编码实现 index.html js 六、获取代码 需要源码&#xff0c;可以私信我(⊙o⊙)&…

【html实现书籍网(未完待续)】

html实现书籍网(未完待续) 前言1.直接下载文件2.简单分析3.后续工作总结前言 最近花了一些时间写了大多只有前端的书籍网,后端仅由flask进行了一下链接的跳转,主要目录有以下: static bootstrapcssfrontimgjslayuitemplates 个人页面.html主界面.html找回密码.html注册页…

Redis客户端框架Redisson

介绍 Redisson是架设在Redis基础上的一个Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。 Redisson在基于NIO的Netty框架上&#xff0c;充分的利用了Redis键值数据库提供的一系列优势&#xff0c;在Java实用工具包中常用接口的基础上&#xff0c;为使用者提…

使用Stable Diffusion进行Ai+艺术设计(以智慧灯杆为例)

目录一. 安装环境二. 配置模型2.1 stable diffusion v12.2 运行并测试生成效果Stable Diffusion 是一种以 CLIP ViT-L/14 文本编码器的&#xff08;非池化&#xff09;文本嵌入为条件的潜在扩散模型。一. 安装环境 创建并激活一个合适的名为conda的环境&#xff1a;ldm conda…

来自2022的年终总结,迎接新的2023

来自2022的年终总结&#xff0c;迎接新的2023&#x1f389;2022&#x1f389;&#x1f339;CSDN博客数据&#x1f339;2022年度也在持续原创博文&#xff0c;累计超过100篇&#xff0c;也收获了很多同学支持付费专栏订阅不断上升&#xff0c;帮助越来越多的同学学习&#x1f33…

java多线程(11):线程同步线程协作

1 线程通信 应用场景 : 生产者和消费者问题 假设仓库中只能存放一件产品 , 生产者将生产出来的产品放入仓库 , 消费者将仓库中产品取走消费 如果仓库中没有产品 , 则生产者将产品放入仓库 , 否则停止生产并等待 , 直到仓库中的产品被消费者取走为止 如果仓库中放有产品 ,…

CSS——结构和布局

1. 自适应内部元素的宽度max-width: min-content; 如果不给元素指定一个具体的 height&#xff0c;它就会自动适应其内容的高度。尝试对width 也实现类似的行为。 使 figure 元素能跟它所包含的图片一样宽&#xff08;图片的尺寸往往不是固定的&#xff09;&#xff0c;而且是…

win10录屏文件在哪?怎么更改win10录屏保存位置

在我们日常使用的win10电脑是自带录屏的功能的&#xff0c;可以将一些精彩画面录屏下来&#xff1b;当录制完视频后&#xff0c;系统会自动将视频保存起来。那win10录屏文件在哪&#xff1f;怎么更改win10录屏保存位置&#xff1f;今天小编就给大家分享一下如何查看win10录屏文…

智能车|直流电机、编码器与驱动器---驱动器

智能车|直流电机、编码器与驱动器---驱动器驱动器TB6612FNG 电机驱动器TB6612FNG 的主要参数引脚说明驱动器 需要驱动器原因&#xff1a; 改变施加给电机电源极之间的电压来调整转速&#xff0c;手动去改变电压太过于麻烦&#xff0c;可以通过微控制器&#xff08;单片机&…

ahooks中的核心hook-useRequest(上)

前言 useRequest是一个异步数据管理的hooks&#xff0c;是ahooks Hooks库的核心hook&#xff0c;因为其通过插件式组织代码&#xff0c;大部分功能都通过插件的形式来实现&#xff0c;所以其核心代码行数较少&#xff0c;简单易懂&#xff0c;还可以支持我们自定义扩展功能。可…

基础知识总结

Java 基础 1. JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a; Java Development Kit 的简称&#xff0c;Java 开发工具包&#xff0c;提供了 Java 的开发环境和运行环境。JRE&#xff1a; Java Runtime Environment 的简称&#xff0c;Java 运行环境&#xff0c;为 Java…

Android App加固原理与技术历程

App为什么会被破-jie入侵 随着黑客技术的普及化平民化&#xff0c;App&#xff0c;这个承载我们移动数字工作和生活的重要工具&#xff0c;不仅是黑客眼中的肥肉&#xff0c;也获得更多网友的关注。百度一下“App破-jie”就有5290万条结果。 ​ 一旦App被破-jie&#xff0c;不…