问题原因:

core 指核心(线圈),没有半导体之前,使用线圈内存,指代内存。

可执行文件是分段存储的,加载进内存也是分段的,如代码段、数据段、堆、栈等,段错误的原因往往是碰到了不该碰到的内存位置(如系统保留段、代码段不能被修改,使用空指针等)。

核心已转储就是说进程结束之前,内存已被储存,可以用于程序员翻看程序的“临终遗言”来定位问题。往往需要使用gdb工具查看核心转储文件,且需要采用一些设置保障核心文件能够被储存,方法如下:

参考 段错误(核心已转储)的问题原因_爱笑的木头的博客-CSDN博客_段错误 (核心已转储)

解决方法:

1.用 ulimit -a 查看 core file size 项是否为 unlimited。如果不是,修改成unlimited (指令:ulimit -c unlimited)

2.检查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 添加程序名

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

因此可以暂时将该服务关闭。

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

apport被关闭后

重新执行程序,使用ll 命令应该就可以在当前路径下看到core文件了

4. gdb定位错误位置

gdb  可执行文件  core文件

还可以输入bt(backtrace 缩写) 命令回溯定位,可以查看下程序崩溃时的堆栈信息,定位具体程序出错函数

注意:

在使用如下命令时

gdb  可执行文件  core文件

需要找到可执行文件的位置

ROS节点可以在launch中设置gdb进行调试:

参考:

ROS 代码调试常用方式配置_ros 调试_忒懂先生的博客-CSDN博客

ROS 学习踩坑笔记2-如何解决使用GDB工具进行ROS debug_HarwardWu的博客-CSDN博客

<node name="client" pkg="example_3" type="client" output="screen" launch-prefix="xterm-egdb--args"/>以下同语句代表不同的debug方式,主要使用以下两个语句
launch-prefix="xterm -e gdb --args"  //xterm命令表示新建一个terminal显示bug信息,-e参数告诉xterm执行剩下的命令行
launch-prefix="gdb -ex run --args" // 表示在运行launch的对话框内,显示bug信息

参考:

Ubuntu20.04出现段错误核心已转储问题解决方案_Abdullah al-Sa的博客-CSDN博客_段错误,核心已转储

已经设置了ulimit,为什么还是没有core文件 - 菜鸡徐思 - 博客园

[Linux] 什么是 段错误(吐核)?_giturtle的博客-CSDN博客_段错误(吐核)

Ubuntu 20 core dumped(核心已转储)问题分析相关推荐

  1. linux下gdb使用core文件调试程序,解决“段错误核心已转储“的问题

    一.core文件介绍以及用途: 1.core文件是什么? core文件包含了程序运行时的内存状态.寄存器状态.堆栈指针.内存管理信息以及各个函数使用堆栈信息等等: 当程序运行过程中出现段错误(Segm ...

  2. C语言再学习 -- 段错误(核心已转储)

    参看:Linux下的段错误产生的原因及调试方法 参看:Linux环境下段错误的产生原因及调试方法小结 参看:维基百科--Segmentation fault 参看:LINUX内核段错误调试详细指南精品 ...

  3. Ubuntu20.04出现段错误核心已转储问题解决方案

    作为一个半路出家的linuc用户,coredump这个问题太让人抓狂了,网上找了好多都是不全面,不适应或者看不懂:现在终于解决了,记录一下防止以后出现还是无解,同时也分享给大家,希望大家能少踩一些坑. ...

  4. Caffe2:段错误(核心 已转储)

    测试Caffe的时候, cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && ech ...

  5. keras核心已转储_转储Keras-ImageDataGenerator。 开始使用TensorFlow-tf.data(第2部分)

    keras核心已转储 This article is the follow up from Part 1. Here, I will compare the tf.data and Keras.Ima ...

  6. 段错误(核心已转储)的问题原因

    一个困扰已久的问题,今天终于明白了. core,核心(线圈),没有半导体之前,使用线圈内存,指代内存. 可执行文件是分段存储的,加载进内存也是分段的,如代码段.数据段.堆.栈等,段错误的原因往往是碰到 ...

  7. svm->predict()报错浮点数例外(核心已转储)

    ubuntu调用opencv3.4的svm加载模型 本来的加载方式是svm->load("model.xml"),结果运行时在预测的位置报错:浮点数例外(核心已转储) 解决方 ...

  8. c++如何解决段错误 (核心已转储)

    在后端优化中遇到了段错误 (核心已转储)问题,寻求解决方法. 首先通过不断的注释部分代码,运行,注释,运行,找到一个大概的范围是错在哪一块. 这类问题只能说根本原因是内存的非法操作.建议生成内存段错误 ...

  9. 【已解决】terminate called after throwing an instance of ‘cv::Exception‘,已放弃 (核心已转储)

    这是运行高翔slambook2的代码出现的错误 terminate called after throwing an instance of 'cv::Exception' what(): OpenC ...

最新文章

  1. 自动跟随小车c语言,基于OpenCV的智能小车运动轨迹跟踪方法研究
  2. 可删除任意位置数据的堆
  3. python 网页cookie的使用
  4. Beta 冲刺(4/7)
  5. from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver,
  6. numpy.argsort详解
  7. sklearn 中的preprocessing数据预处理
  8. 无限超越超级机器人nds_阿里重新定义个人电脑!仅名片大小,无限升级,不怕丢失无惧病毒,价格仅传统PC一半...
  9. (07)System Verilog 数组常用操作
  10. WPFのclipToBounds与maskToBounds的区别
  11. jackson json的使用
  12. Linux DRM 理解
  13. NETBEAN 启动报错 CANNOT LOCATE JAVA INSTALLATION IN SPECIFIED JDKHOME的解决办法
  14. CV中domain adaptation领域自适应问题
  15. 彻底干掉霸占我任务栏的2345好压的垃圾广告搜索以及天气预告工具栏
  16. 这个好用高效的读书笔记app软件一定要收藏
  17. 电脑如何拦截弹窗广告
  18. 华为p10计算机器在哪,华为P10怎么连接电脑教程
  19. C# 理解Thread.Sleep()方法
  20. 前端SEO优化的一些解决方案

热门文章

  1. SEOER应当避免赌徒式的外链操作手法
  2. git在远程仓库传项目出现的问题
  3. 周末和新润视频聊天了
  4. imx6ull项目也是封装成脚本安装 Poky 交叉编译工具链类似ATK-STM32MP157交叉编译
  5. 【财富空间】大润发创始人挥泪离场:我战胜了所有对手,却输给了时代!
  6. wince5+2440的睡眠和唤醒
  7. 盛世昊通:面向“双碳”目标,开拓汽车产业价值蓝海
  8. 10.前端JavaScript之【函数】【全局变量与局部变量】
  9. 基于PHP的自动化办公OA系统
  10. 《考博英语词汇重难点20天冲刺》