首页 > 系统相关 >C++-Ubuntu core dumped(核心已转储)-GDB调试

C++-Ubuntu core dumped(核心已转储)-GDB调试

时间:2023-04-09 23:12:50浏览次数:56  
标签:-% core insert into dumped 转储 filename apport

C++-Ubuntu core dumped(核心已转储)-GDB调试

Linux的可执行程序异常退出时,提示“核心已转储”。
此时需要系统生成core文件,并通过GDB调试以确定问题。

https://blog.csdn.net/scjdas/article/details/128585787

设置系统生成core文件

ulimit -a 查看 core file size 项是否为 unlimited。如果不是,修改成unlimited (指令:ulimit -c unlimited
当程序异常时,使用ll 命令应该就可以在当前路径下看到core文件。

core文件路径

ps:按照以下方法,确实在可执行文件当前目录下生成了core。

检查core产生路径是否正确,cat /proc/sys/kernel/core_pattern
如果路径不存在,则设置:echo "./core-%e-%p-%s" > /proc/sys/kernel/core_pattern

core设置主要命令解析:

 //控制core文件的文件名中是否添加pid作为扩展
echo "1" > /proc/sys/kernel/core_uses_pid  
//设置core文件的输出路径和输出文件名,这里我的路径是/home/boy/corefile,文件名就是后面的部分
echo "/home/boy/corefile/core-%e-%p-%t"> /proc/sys/kernel/core_pattern 
 
//参数说明
%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文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加程序名

因为ubuntu官方为了自动收集错误,设置了服务apport.service,用于自动生成崩溃报告,我们还是无法获取core文件,可以暂时将该服务关闭。

//1.关闭错误报告
sudo systemctl disable apport.service
//或
sudo service apport stop
 
 
//2.启用错误报告
sudo systemctl enable apport.service
//或
sudo service apport start

重新运行程序即可。

gdb调试core

gdb 可执行文件 core文件
更多操作需要查看gdb相关文档。

标签:-%,core,insert,into,dumped,转储,filename,apport
From: https://www.cnblogs.com/yongchao/p/17301401.html

相关文章

  • .NET Core 离线 生成 Tron 波场私钥和地址笔记
    NuGet引入依赖库PM>Install-PackageTron.Wallet.Net随机生成私钥和对应的地址usingTron.Wallet.Net;namespaceConsoleApp1{internalclassProgram{staticasyncTaskMain(string[]args){vartronECKey=TronECKey.GenerateKey(TronN......
  • ASP.NET Core如何知道一个请求执行了哪些中间件?
    第一步,添加Nuget包引用需要添加两个Nuget包分别是:Microsoft.AspNetCore.MiddlewareAnalysis和Microsoft.Extensions.DiagnosticAdapter,前者是分析记录中间件核心代码实现后者是用来接收日志输出的,由于是用的DiagnosticSource方式记录日志,所以需要使用DiagnosticListener对象的Sub......
  • .NET Core MongoDB数据仓储和工作单元模式封装
    前言     上一章我们把系统所需要的MongoDB集合设计好了,这一章我们的主要任务是使用.NETCore应用程序连接MongoDB并且封装MongoDB数据仓储和工作单元模式,因为本章内容涵盖的有点多关于仓储和工作单元的使用就放到下一章节中讲解了。仓储模式(Repository )带来的好处是一......
  • WebKit三件套(2):WebKit之JavaScriptCore/V8
    WebKit作为一个浏览器引擎,其中Javascript实现包括JavaScriptCore和V8,为了能更全面的了解WebKit,我们需要深入的了解Javascript实现的基本原理、其在WebKit中的作用以及与其他部分之间的交互,同时与Gecko中的Javacript实现作初步的对比。让我们开始了解WebKit之Javascript实现JavaScr......
  • WebKit三件套(1):WebKit之WebCore篇
    导语:Chrome浏览器的代码量其实是非常庞大的,要想对其有深入的理解,仅仅编译编译调试调试,是很难深入下去的。让我们还是从其主要部分如多进程管理通信、WebKit、V8、Skia、WinHttp、Sanbox等着手分析其主要流程及数据结构,或许能达到事半功倍的效果,而WebKit是其中非常重要的一部分,是C......
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级(六十)
    Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+eas......
  • 回顾.NET系列:Framework、Net Core、Net 过往
    目录一、个人最近工作变化二、Framework、NetCore、.NET时过境迁Framework:爱你定格在4.8.NetFoundation:.Net变革大脑重新统一的.NET一、个人最近工作变化我经历了可能很多技术人都会经历的过程,从一名纯粹的技术人员转型成为了一名技术管理我已经不再单纯了,经历了从做好自......
  • macOS 13.3.1 (22E261)With OpenCore 0.9.2开发版 and winPE双引导分区原版镜像
    镜像特点原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)完全由黑果魏叔官方制作,针对各种机型进行默认配置,让黑苹果安装不再困难。系统镜像设置为双引导分区,全面去除clover引导分区(如有需要,可以自行直接替换opencore分区文件为clover引导文件)备注:此镜像仅适用与16g......
  • Asp.NetCore3.1
     Asp.NetCore3.1.NetCoreFramework都属于框架并列:大家是不同的框架,都有自己的CLR。Asp.NetCore是一套Web开发框架 https://github.com/aspnet/AspNetCore 源码地址            1 ......
  • Java for Web学习笔记(二六):JSTL(2)Core Tag(上)
    可以在JSP中替代Java代码的几乎所有功能,包括条件编程,循环,迭代和内容输出。taglib的directive如下:<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%><c:out>AttributesNameRequiredRequest-timeTypeDescriptionvaluetruetruejava.lang.StringExpression......