core文件分析 z

core dump 分析 环境变量设置 可以通过 /etc/security/limits 文件对各用户的基本配置参数包括 core 大小进行限制。或者通过 ulimit 更改当前环境下的 core 大小限制。 默认情况下,应用进程生成 core dump 时都使用文件名 core。为了避免同一工作目录下的进程 core 相互覆盖,可以定义环境变量 CORE_NAMING=true,然后启动进程,这样将生成名为 core.pid.ddhhmmss 的文件。可以使用 file core 命令查看 core 是哪个进程产生的。. 阅读详情

摘抄: core文件分析

                                      

内容提要:
主要包含两部分内容:
1,core文件描述
2,core文件分析

说明:


一,Core 文件描述
Coredump 在unix 平台是非常容易出现的一种错误形式,直接表现形式为core 文件, core 文件产生于当前目录下,
通常,象内存地址错误、非法指令、总线错误等会引起coredump ,core 文件的内容包含进程出现异常时的错误影
像。如果错误进程为多线程并且core 文件的大小受限于ulimit 的系统限制,则系统只将数据区中错误线程的堆栈区
复制到core 文件中。
应当注意,从AIX 5L 版本5.1 开始core 文件的命名格式可以通过环境变量CORE_NAMING 设置,其格式为:
core.pid.ddhhmmss ,分别代表为:
pid :进程标示符
dd :当前日期
hh :当前小时
mm :当前的分钟
ss :当前的秒
core 文件的缺省格式为老版本的格式,coredump 文件的内容按照以下的顺序组织:
1 ) core 文件的头部信息
  • 定义coredump 的基本信息,及其他信息的地址偏移量
2 ) ldinfo 结构信息
  • 定义loader 区的信息
3 ) mstsave 结构信息
  • 定义核心线程的状态信息,错误线程的mstsave 结构信息直接存储在core 文件的头部区,此区域只对多线程的
    程序有效,除错误线程外的其他线程的mstsave 结构信息存与此区域。
4 ) 缺省的用户堆栈数据
  • 存储coredump 时的用户堆栈数据
5 ) 缺省的数据区域
  • 存储用户数据区域信息
6 ) 内存映射数据
  • 存储匿名的内存映射数据
7 ) vm_info 结构信息
  • 存储内存映射区域的地址偏移量和大小信息
缺省情况下,用户数据、匿名的内存区域和vm_info 结构信息并不包含在core 文件中,core 文件值包含当前的进
程堆栈、线程堆栈、线程mstsave 结构、用户结构和错误时的寄存器信息,这些信息足够跟踪错误的产生。Core
文件的大小也可以通过setrlimit 函数设定。

二,Core 文件分析
首先分析coredump 的结构组成,core 文件的头信息是由结构core_dump 结构定义的,结构成员定义如下:
成员类型描述
c_signo char 引起错误的信号量
C_entries ushort Coredump 的模块数
*c_tab Struct ld_info Core 数据的地址偏移量
成员类型描述
c_flag char 描述coredump 的类型,类型为:
FULL_CORECore 包含数据区域
CORE_VERSION_1 生成 core 文件的AIX 的版本
MSTS_VALID 包含mstsave 的结构
CORE_BIGDATACore 文件包含大数据
UBLOCK_VALIDCore 文件包含u_block 结构
USTACK_VALIDCore 文件包含用户堆栈数据
LE_VALIDCore 文件至少包含一个模块
CORE_TRUNCCore 文件被截短
c_stack Caddr_t 用户堆栈的起始地址偏移量
C_size int 用户堆栈的大小
C_mst Struct mstsave 错误mst 的拷贝
C_u Struct user 用户结构的拷贝
C_nmsts int Mstsave 结构的数量
C_msts Struct mstsvae * 线程的mstsave 结构的地址偏移量
C_datasize int 数据区域的大小
C_data Caddr_t 用户数据的地址偏移量
C_vmregions int 匿名地址映射的数量
C_vmm Struct vm_info * Vm_info 数据表的起始地址偏移量

借助于下面提供的程序可以分析core 文件的部分信息:
#include <stdio.h>
#include <sys/core.h>

void main(int argc, char *argv[])
{
FILE *corefile;
struct core_dumpx c_file;
char command[256];

if (argc != 2) {
fprintf(stderr, "Usage: %s <corefile>/n", *argv);
exit(1);
}

if ((corefile = fopen(argv[1], "r")) == NULL) {
perror(argv[1]);
exit(1);
}

fread(&c_file, sizeof(c_file), 1, corefile);
fclose(corefile);

sprintf(command, "lquerypv -h %s 6E0 64 | head -1 | awk '{print $6}'", argv[1]);

printf("Core created by: /n");

system(command);

printf("Signal number and cause of error number: %i/n", c_file.c_signo);
printf("Core file type: %i/n", c_file.c_flag);
printf("Number of core dump modules: %i/n", c_file.c_entries);
printf("Core file format number: %i/n", c_file.c_version);
printf("Thread identifier: %i/n", c_file.c_flt.th.ti_tid);
printf("Process identifier: %i/n", c_file.c_flt.th.ti_pid);
printf("Current effective priority: %i/n", c_file.c_flt.th.ti_pri);
printf("Processor Usage: %i/n", c_file.c_flt.th.ti_cpu);
printf("Processor bound to: cpu%i/n", c_file.c_flt.th.ti_cpuid);

/* if (c_file.c_flt.th.ti_cpu > 1) printf("Last Processor: cpu%i/n", c_file.c_flt.th.ti_affinity);
*/
exit(0);
}
假定以上程序的可执行程序名称为anacore ,按照以下步骤察看其运行结果:
1 ) 通过下面的程序生成core 文件
    • main() {
      char *testadd;

      strcpy(testadd, 搣Just a testing攠);
      }
      程序命名为core.c
2 ) 编译程序core.c
    • xlc –o pcore core.c
3 ) 运行pcore 产生core 文件
4 ) 运行anacore 察看结果
    • anacore core
5 ) 结果如下 [root@F80_1#]acore core
Core created by:
|pcore...........|
Signal number and cause of error number: 11
Core file type: 114
Number of core dump modules: 0
Core file format number: 267312561
Thread identifier: 40827
Process identifier: 9520
Current effective priority: 60
Processor Usage: 0
Processor bound to: cpu-1

从上面的结果,我们可以简单的分析产生core 文件的应用、信号量及进程等信息,如果要求一
些更详细的信息,可以借助于dbx 等调试工具进一步分析。

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
Linux 中 core dump 文件的生成、管理与自动化分析实战 本文详细介绍了Linux系统中core dump文件的生成、管理与自动化分析方法。通过ulimit、core_pattern配置和coredumpctl工具的使用指南,帮助开发者有效捕获和分析程序崩溃信息。文章还提供了GDB调试技巧、自动化分析脚本及常见问题解决方案,是Linux系统调试的实用参考。 阅读详情

相关推荐

GPU-Z、CPU-Z、CUDA-Z到底怎么选?一篇讲清三款硬件检测神器的适用场景与核心差异

本文深度解析GPU-Z、CPU-Z和CUDA-Z三款硬件检测工具的核心差异与适用场景。CPU-Z专注处理器细节,是超频玩家的首选;GPU-Z提供全面的显卡数据,适合游戏玩家和硬件爱好者;CUDA-Z则针对NVIDIA GPU的计算能力分析,是深度学习开发者的必备工具。文章还提供了不同应用场景下的选型建议,帮助用户根据需求选择最合适的工具。

weixin_42531925的博客 445

【Linux】14. 详解GDB调试

GDB:1. 编译要求2. 如何调试运行程序?3.设置断点4.调试命令5.Ctrl + c6.Ctrl + z7.gdb调试打印QString,打印不出来怎么解决?8.打印字符串显示不全,后面会显示...怎么解决?9.如何修改变量继续调试?10.如何调试已运行的程序?11.如何分析Core Dump文件?

瞌睡的博客 475

Fisher r-z变换,z-score标准化与常用标准化

Z-score标准化 这是数据处理最常用的方法 * 目标:均值0,方差1 h(x1) = (h(x1)-mean(h(X))/squareroot(sum of h(xi)*h(xi)) 标准化 (标准差置1) * 目标:标准差为1 * 需要方法: PCA * Tips: 图像不需要因为他们都是有界像素值,只需要中心化 h(x1) = h(x1)/squa...

mmm305658979的博客 4万+

sparkSQL练习,分析处理篮球运动员数据

题目: (1) 分析2016年 ①②③④ 属性 z-score 排名 package zh import org.apache.spark.sql.SparkSession /** * * @author smallheroic * @Date 2019-12-12 15:18 * */ object homework1 { case class nba(Age:Int,...

qq_42400267的博客 2981

C++程序崩溃调试实战:从Core Dump分析到问题定位

程序崩溃是软件开发中常见的挑战,其本质是进程因未处理的异常或非法操作而意外终止。理解其原理,关键在于掌握系统在崩溃瞬间生成的完整内存快照——Core Dump(Linux)或Dump文件(Windows),它记录了线程栈、寄存器等关键现场信息。这项技术的核心价值在于,为事后调试提供了不可替代的“黑匣子”,是构建高稳定性桌面应用、后台服务和嵌入式系统的基石。通过配置系统生成完整的转储文件,并借助GDB、WinDbg等调试器配合精确的符号文件进行分析,开发者可以高效地勘查调用栈、检查内存状态,从而定位访问违例、

weixin_30435261的博客 328

Intel Core i3-4110M处理器CPU-Z评测与老旧设备升级指南

CPU-Z作为专业的处理器检测工具,通过读取CPU内部寄存器来准确识别硬件参数并执行基准测试,其测试结果对硬件性能评估具有重要参考价值。在计算机体系结构中,处理器的核心数量、缓存大小和制程工艺共同决定了其计算能力,而超线程技术则通过逻辑核心模拟提升了多任务处理效率。对于Intel Core i3-4110M这类IVB架构的移动处理器,22纳米制程和双核四线程设计在当年平衡了性能与功耗,尤其适合办公自动化等轻负载场景。通过CPU-Z实测数据显示,该处理器单线程得分1256分,多线程2489分,结合35W TD

weixin_30514745的博客 287

如何使用dbx分析core文件_[转]使用DBX分析AIX 下的 CoreDump

最近工作涉及到分析core dump文件,发现这个好帖,就当仁不让地转到偶博客了O(∩_∩)O~PS:Where can you get dbx?It is part of bos.adt.debug# lslpp -w /usr/bin/dbxFile Fileset Type-------------------------------------------/usr/bin/dbx bos....

weixin_39918084的博客 892

(数字ic验证)从零开始的apb_watchdog验证模块搭建(一、功能介绍与环境搭建)

apb_watchdog验证模块搭建(一)文章目录 文章目录apb_watchdog验证模块搭建(一)文章目录前言一、apb_watchdog简单功能介绍二、测试平台环境搭建1.测试所用模板介绍2.tb与interface2.env与watchdog_pkg3.test与base_sequence4.Makefile总结——当前验证结构 前言 本文介绍了apb_watchdog验证模块的搭建过程与其具体代码,主要包括其中验证环境的构建,测试序列的发送与回归测试收集。主要运用systemvorilog与u

peop1e的博客 9739

为什么程序异常退出没有core文件?

core文件生成

steem 5081

光耦CTR参数实战:如何避免误触发与功耗陷阱(附计算公式)

本文深入解析光耦CTR参数在电路设计中的关键作用,探讨如何平衡误触发风险与功耗表现。通过TLP521、PC817等常见型号的实测数据对比,提供不同工作状态下的选型策略和计算公式,帮助工程师优化设计,提升系统稳定性和能效。

2a4s6d8f0g的博客 324

平衡电桥在高压绝缘检测中的动态切换策略与误差优化

本文深入探讨了平衡电桥在高压绝缘检测中的动态切换策略与误差优化方法。通过分析四种基本切换模式及智能切换时序设计,显著提升检测精度与范围。结合电阻选型黄金法则和软件补偿技术,有效降低测量误差,为电动汽车电池管理系统提供可靠的安全保障。

weixin_30275415的博客 473

linux 下core dump文件的生成以及错误定位

1.core dump文件 core dump 又叫核心转储,是一个程序运行时的环境一个集合包,包含崩溃时的堆栈信息,是一个二进制文件,无法使用记事本打开,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象,主要用来调试。 2.core dump文件的生成 当程序运行过程中异常终止或崩溃时会发生 core dump,但还没说到什么具体的情景程序会发生异常终止或崩溃,例如我们使用 kill -9 命令杀死一个进程会发生 core dump 吗?实验证明是不能的,那么什么情况会产生呢? Li

hongge_smile的博客 1万+

STM32F407 HAL库定时器触发ADC采集与DMA数据传输(定时器TIM+ADC+DMA)

在STM32F407系列微控制器的开发中,结合定时器、ADC(模数转换器)与DMA(直接存储器访问)控制器,能够显著提升数据采集与传输的效率。本文将指导你如何使用STM32 HAL库,通过定时器触发ADC1的单通道采集,利用DMA传输数据,最终通过串口将电压值打印出来。具体实现中,我们将读取ADC1的通道5(对应引脚PA5),并将转换得到的电压值发送到串口助手上进行显示。

jmlinux的博客 7013

金融分析很简单,利用Python分析股票交易中的滚动Z值

本文将使用Python解锁市场见解:分析股票交易中的滚动Z值。

weixin_39915649的博客 1680

408——计算机组成原理(持续更新)

小数点前的0代表正数,1代表负数。

qq_55202378的博客 1724

LabVIEW内存优化实战:用DVR和队列高效处理大型数组,告别数据副本

本文深入探讨LabVIEW内存优化技术,重点介绍数据值引用(DVR)和单元素队列(SEQs)在高效处理大型数组中的应用。通过对比传统方法与现代引用技术的性能差异,提供减少内存副本、提升程序效率的实战方案,帮助开发者在测试测量、图像处理等数据密集型场景中实现显著性能提升。

weixin_30835649的博客 1062

如何使用dbx分析core文件_使用DBX分析AIX下的 CoreDump

使用DBX分析AIX下的CoreDumpPS:Wherecanyougetdbx?Itispartofbos.adt.debug#lslpp-w/usr/bin/dbxFileFilesetType-------------------------------------------/usr/bin/dbxbos.adt.debugSymlink以下转自http://...

weixin_39777875的博客 546

手把手调试:如何为高通Hypervisor上的GuestOS添加一个自定义的HAB服务通道

本文详细介绍了如何在高通Hypervisor环境下为GuestOS添加自定义HAB服务通道的全过程。从HAB通信框架的核心概念解析到设备树节点的动态注入机制,再到物理通道的内核层实现和用户层测试,提供了完整的开发案例和调试技巧,帮助开发者高效构建定制化通信服务。

weixin_27066963的博客 371

浅析Linux下core文件 z

浅析Linux下core文件张华 (zhanghua@eyou.net) 2006 年 8 月 02 日   当我们的程序崩溃时,内核有可能把该程序当前内存映射到core文件里,方便程序员找到程序出现问题的地方。最常出现的,几乎所有C程序员都出现过的错误就是“段错误”了。也是最难查出问题原因的一个错误。下面我们就针对“段错误”来分析core文件的产生、以及我们如何利用core文件找

548

2025.06.16【转录组】|Ribo-seq数据流程详解(二 基因组比对)

本文详细介绍了Ribo-seq数据分析中的比对流程,包括环境准备、STAR索引构建、比对参数设置及结果统计可视化。通过samtools和R脚本实现比对质量评估,提供常见问题解决方案和关键指标解读。该流程强调比对参数优化和质量控制,为后续翻译组学分析奠定基础。

1980

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Core Dump调试 /Z

1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来. 2. gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字,

bytxl的专栏 1107

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

[zz]discuzX1核心文件class_core.php分析

/*Discuz!X 核心文件class_core.php分析 2010-08-24 10:20 在研究DISCUZ!X核心文件class_core.php时作的DISCUZ!X产品相较之前版本的底层机制上的变化分析及源码部分注释。 ___________________________________________ 我今天花了1个多小时,阅读了下class_core.php,DB数据库...

begend 473

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Intel Core i3-4110M处理器性能评测与CPU-Z测试分析

CPU性能测试是评估处理器计算能力的重要方法,其中CPU-Z作为权威基准测试工具,通过标准化算法测量单线程与多线程性能得分。这种测试的价值在于为硬件选型、系统优化提供量化依据,特别适用于老旧设备性能评估和升级决策。在实际应用中,结合Intel Haswell架构的能效特性,可以显著提升办公效率和多媒体处理能力。本文以Intel Core i3-4110M为例,详细解析其CPU-Z测试结果及超线程技术带来的性能提升,为硬件爱好者提供实用的性能参考数据。

angou6476的博客 442

DM8:达梦数据库宕机问题分析调试gdb core

Linux core文件生成受限制--Core file was truncated to 2147483648 bytes+gdb dmserver core调试

qq_37358909的博客 2699

Linux core 文件配置详解:5种信号触发与 /proc/sys/kernel 参数调优

本文深入解析Linux core文件生成机制,详细介绍了5种触发信号(SIGSEGV、SIGABRT等)的应用场景,以及/proc/sys/kernel核心参数的调优方法。通过实战案例展示如何配置core_pattern、设置资源限制,并提供了GDB调试技巧和生产环境最佳实践,帮助开发者高效定位和解决系统异常问题。

weixin_31421613的博客 328
上一篇: solaris下查看进程的cpu占用率 z
下一篇: VNC copy'n'paste
KataDoc360
博客等级 码龄18年 65粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值