linux之core文件调试

news/2024/10/22 17:14:05

linux之core文件调试

前言

有时候程序会异常退出而不带任何日志,此时就可以使用 core 文件进行分析,它会记录程序运行的内存,寄存器,堆栈指针等信息

什么是core文件

通常在 Linux 下遇到程序异常退出或者中止,我们都会使用 core 文件进行分析,其中包含了程序运行时的内存,寄存器,堆栈指针等信息,格式为 ELF ,可以理解成程序工作当前状态转储成一个文件,通过工具分析这个文件,我们可以定位到程序异常退出或者终止时相应的堆栈调用等信息,为解决问题提供帮助。

core文件配置

查看系统配置生成core文件大小

ulimit -aulimit -c

查看系统配置生成core文件大小

若显示为0,表示没有开启core文件的产生,即程崩溃时,系统不会产生core文件

配置系统关闭生成core文件大小

ulimit -c unlimited

上面对 core 文件的操作仅对当前生效,若需要永久生效,则要将相应操作写入 /etc/profile

修改完成后执行source/etc/profile可以让配置立即生效

配置core文件的文件名称和路径

设置pid作为文件扩展名

echo "1" > /proc/sys/kernel/core_uses_pid

控制core文件保存位置和文件名格式

echo "./core-%e-%p" > /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 # 添加命令名

/proc/sys/kernel/core_uses_pid 这个文件的值若为1,则无论是否配置 %p ,最后生成的 core 文件都会添加 pid

永久生效需要在系统配置文件/etc/sysctl.conf中设置

kernel.core_uses_pid = 1

kernel.core_pattern = ./core-%e-%p

然后执行sysctl -p立即生效

gdb调试方法

直接gdb ./a.out core或先进入gdb控制台再core调试

gdb ./a.out
...
(gdb) core-file core
...
(gdb) bt 
...

如需要在 PC 上调试嵌入式设备产生的 core 文件,则需要选取相应平台的 gdb 工具,并在进入 gdb 后设置符号文件的位置

xxx-xxx-gdb ./a.out
...
(gdb) solib-search-path xxx.so:xxx.so
...
(gdb) core-file core
...
(gdb) bt
...

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

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

相关文章

物联网从层次结构上分为几层,各层的主要作用是什么

物联网的层次结构包括感知层、网络层和核心层,每个层次都扮演着不可或缺的角色。感知层负责数据采集,网络层实现数据传输,核心层则进行数据处理和决策。这种层次结构的设计使得物联网能够高效地运行,为人们的生活和工作带来了巨大的便利和效益。1. 感知层(Perception Laye…

移动开发(四):.NET MAUI中Android应用修改安装图标和启动页面

今天继续给大家分享.NET MAUI中开发的Android应用如何修改安装图标和启动页面,希望对大家使用Net开发安卓APP提供一些帮助! 一、更换APP应用图标 这里我们直接编辑项目文件 MyFirstMauiApp.csproj来修改APP应用图标 官方案例默认的组合图标,其中ForegroundFile表示前景图像(…

将NC栅格表示时间维度的数据提取出来的方法

本文介绍基于Python语言,逐一读取大量.nc格式的多时相栅格文件,导出其中所具有的全部时间信息的方法~本文介绍基于Python语言,逐一读取大量.nc格式的多时相栅格文件,导出其中所具有的全部时间信息的方法。.nc是NetCDF(Network Common Data Form)文件的扩展名,表示一种常…

哪种IDE能同时写java和前端代码

在选择IDE(集成开发环境)来同时编写Java和前端代码时,几个主要的选择包括IntelliJ IDEA、Eclipse、和Visual Studio Code。IntelliJ IDEA提供了强大的Java开发支持和广泛的前端开发插件,Eclipse以其插件生态系统著称,可以通过安装相应的插件支持Java和前端开发,而Visual …

2024.10.22总结

byd放三道黑是吧本文于 github 博客同步更新。 今天打两场 byd放三道黑是吧。 第一场: A: CF1261F 将区间拆分为 \([x2^{i},(x+1)2^{i})\) 的形式,发现两个区间中的数两两异或后形成的仍为一个区间,将 A,B 都拆分后区间两两异或会得到 \(O(n^2\log^2n)\) 个区间,取并即为答…

【FMC163】基于VITA57.1标准的双通道3GSPS AD采集、双通道12GSPS DA回放FMC子卡模块(100%国产化)

板卡概述 FMC163是一款基于VITA57.1标准的实现2路14-bit、3GSPS ADC采集功能、2路14-bit 12GSPS DA回放FMC子卡模块。该模块遵循VITA57.1标准,可直接与FPGA载卡配合使用,该板卡支持对6GHz的射频信号进行数字化采样以及信号生成,板内集成了高性能的时钟管理模块,具有极高的收…

玄机蓝队靶场_应急响应_71:实战evtx-文件分析

windows日志排查工具: https://www.cnblogs.com/starrys/p/17129993.htmlwindows日志事件ID,参考文章:https://peterpan.blog.csdn.net/article/details/139887217下载日志分析工具FullEventLogView.exe https://www.nirsoft.net/utils/fulleventlogview-x64.zip 分别打开三个…

MySQL基于gtid同步,新增slave节点

环境说明:当前MySQL集群为一主一从, 新增加 Slave 节点,将架构变更为一主两从,集群已经运行了很长时间,主节点得binlog早就被purged,启动slave得时候会报错,1236、1062等 操作步骤:备份master数据,从节点reset master,导入数据 1.备份主节点数据:在进行任何操作之前,…