首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核Crash分析

在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:Linux2.6.32。...一般都是和内核有交互,例如用户空间程序使用系统调用进入内核空间。这时使用的不再是用户空间的栈空间,使用对应的内核栈空间。...在Linux-2.6.32内核中thread_info.h文件中有对内核堆栈的定义: #define THREAD_SIZE 8192 在Linux内核中使用下面的联合结构体表示一个进程的线程描述符和内核栈...,在内核中文件include/linux/sched.h。...在内核中的某一个进程使用了过多的栈空间时,内核栈就会溢出到thread_info部分,这将导致严重的问题(系统重启),例如,递归调用的层次太深;在函数内定义的数据结构太大。 ?

4.4K20

linux系统奔溃之vmcore:kdump 的亲密战友 crash

crash 是目前广泛使用的 linux 内核崩溃转储文件的分析工具,掌握 crash 的使用技巧,对于分析定位内核崩溃的问题,有着非常重要的作用。...什么是 crash 如前文所述,当 linux 系统内核发生崩溃的时候,可以通过 kdump 等方式收集内核崩溃之前的内存,生成一个转储文件 vmcore。...如果 crash 命令行没有指定转储文件,则 crash 默认使用实时系统内存,这时需要 root 权限。...crash 支持 2.2.5-15(含)以后的 Linux 内核版本。随着 Linux 内核的更新,crash 也在不断升级以适应新的内核。...crash 内置命令简介 crash 命令行启动后,可以通过一些内置命令来打印系统崩溃前的信息。

8.2K21
您找到你想要的搜索结果了吗?
是的
没有找到

Linux crash分析简明参考

1 背景Linux操作系统在作为服务器的场景下应用最为广泛,但是在使用过程中也会遇到莫名崩溃的情况.这时我们就希望能对崩溃前一刻内存中的数据进行分析,从而找到崩溃的原因.本文将对整个过程所涉及到的技术做一个简单但是全面的介绍...,包括:如何安装kdump,如何设置系统参数来捕获崩溃前的内存;如何使用crash做简单的分析;并且介绍如何使用更加简便的工具PyKdump来做crash文件的分析.通过了解这些知识, 可以帮助Linux...运维人员更快更方便地排查问题.2 基本步骤要捕捉到Linux在崩溃前一刻的内存,我们需要安装kdump工具在生产系统上,并进行相应的参数配置.这样当生产系统上发生crash的时候, 操作系统控制权将会转换到...kdump的配置是在生产系统Linux环境中配置的.下面根据操作系统的不同,简单介绍一下如何安装kdump.3.1 Centos/RHEL/Tlinux 环境下的安装首先确认当前系统中是否已经安装过kdump...工具分析4.1 安装crash工具为了不影响生产系统的运行,通常我们会将生成的vmcore文件拷贝到用于分析的Linux系统上去分析.分析工具通常采用crash工具.CentOS下可以通过如下命令安装:

89000

搭建自己的 crash 监控系统

如果你的代码不是足够合理,那就准备迎接世界上最严重的问题吧:Crash。...根据研究所示: 应用崩溃是手机app用户抱怨最多的额问题 更严重的:如果一个应用连续崩溃3次,大概一半的用户会卸载这个应用 崩溃追踪系统,让开发者能够从用户的设备上收集到每一个导致崩溃的细节,专门用来解决这种应用崩溃问题...目前最流行的2个流行崩溃追踪系统是 Crashlytics 和 Parse Crash Reporting,这两个服务都是免费的,开发者可以免费集成他们到你的app。...当应用奔溃,整个跟踪报告就会发送到他们的后端,开发者可以及时快捷的修复这些严重的问题,这样,你就可以在很短的时间内奉上一个“无Crash”的应用。...是否有那种允许我们在自己服务器部署的崩溃追踪系统?当然有!!

1.2K30

Android Crash之Native Crash分析

前言 上一篇给大家介绍了Android Crash中的Java Crash分析,我们可以知道Java Crash一般会弹出提示框告诉我们程序崩溃了,通常使用Crash工具都能够捕获到;本篇博客来谈谈如何针对...Native Crash在Android上的特点 出错时界面不会弹出提示框提醒程序崩溃(Android 5.0以下) 出错时会弹出提示框提醒程序崩溃(Android 5.0以上) 程序会直接闪退到系统桌面...不过系统还是会提供相关有用的日志,我们在Android Studio查看logcat的时候需要做一下过滤。 ? 在logcat添加完”DEBUG”的过滤项之后,我们就能得到以下log: ?...Crash分析有个初步的认识,关于这一块还有很多东西可以讲,比如具体的signal有哪些,Linux下的信号机制是怎样的,怎样才能够捕获到信号等等,关于Native层的Crash捕获,我们有没有第三方的开发工具能帮助到我们...,这里就要隆重推荐大家使用Bugly,可以说是业内领先的崩溃捕获工具,不仅能够帮助我们获取到完整的错误堆栈,还能够将出错的上下文环境参数(比如系统版本、设备信息、内存信息等)详细的展现出来,大家不妨可以尝试下

3.1K60

如何实现Linux服务Crash后自动重启?

概述 近期碰到了一个 Linux Systemd 服务 Crash, Crash 后需要人工介入重启. 那么, 有没有办法如何实现 Linux 服务 Crash 后自动重启?...也许你使用的软件有一个已知的错误,要求在崩溃时删除缓存文件,也许你想启动一个脚本来收集日志和系统信息,以便诊断问题。Systemd 允许你指定在服务失败时运行的单元。...[Service] Type=oneshot ExecStart=/usr/local/sbin/k3s-recovery.sh 这个脚本可以做任何事情:执行一些手动变通方法让服务重新运行,向监控系统发出警报...所以 systemd 内置了在单元故障时触发系统重启的功能。...在本例中,当单元发生故障时,系统将优雅地重新启动: [Unit] Description=Lightweight Kubernetes Documentation=https://k3s.io Wants

55340

Android Crash之Java Crash分析

这里我们进行一些概念上的普及: Crash就是由于代码异常而导致App非正常退出现象,也就是我们常说的『崩溃』 Android中有哪些类型Crash 通常情况下会有以下两种类型Crash: Java Crash...Native Crash 本篇先探讨Java Crash,Native Crash我们会在下一篇重点讨论。...Java Crash在Android上的特点 这类错误一般是由Java层代码触发的 一般情况下程序出错时会弹出提示框,JVM虚拟机退出 一般的Crash工具都能够捕获,系统也提供了API 举个栗子 ?...); mContext = context.getApplicationContext(); } /** * 这个是最关键的函数,当程序中有未被捕获的异常,系统将会自动调用...,则交给系统去结束我们的程序,否则就由我们自己结束自己 if (mDefaultCrashHandler !

1.2K20

手把手教你如何分析 iOS 系统crash

先上栈,这个 crash 是我们目前开发产品的 top5 crash ?...第一步 对于死在 ojbc _ msgSend 的函数(不仅仅是 msgSend, objc_retain 等一切没有创建栈帧的都需要注意),请先检查 crash 上报的寄存器信息 ?...目前的 crash上报功能,丢失了最顶层的栈。因为 objc_msgSend 并没有创建栈帧。 这样,我们就得根据 lr,来计算真实的最后一个栈了。 栈帧介绍 ?...so,换种思路,根据之前动态调试的结果 privateCreateOrConfigure:withRawDescription: 触发时机,有两个,一个是系统耳机插拔通知的时候,另一个就是我们自己调用...而系统通知只在 audio 线程调用。所以呢,既然如此,那我们自己干脆不调用了,在系统通知的时候,在回调里面保存最新的。

1.9K80

系统CRASH 恢复到应用系统的架构设计打板子

CRASH 能让系统继续工作, 关键点在哪里,  DBA 那就毋庸置疑了,板子打的是妥妥的, 备份策略怎么制定的, RTO  RPO 到底是怎么衡量的,和业务部门和开发部门怎么商量的, 备份软件怎么选择的...,你在怎么备份,遇到CRASH 的情况,都不能保证能百分之百的恢复数据....4  将数据恢复到其他数据库设备,提供其他公用 但备份一定不是一个系统CRASH 后救命的唯一稻草,系统早期的设计当中是不是应该考虑这个问题,我们举一个例子....自然是没有 2  任何系统都有可能CRASHCRASH 的时候,操作的日志记录信息,可能是你能恢复数据的一个救命稻草,但你将他放到业务系统的数据库中, 试问是何道理, 是要一损俱损, 这样的应用一定要进行解耦...总结,一个系统CRASH 以及恢复,是可以发现整体系统设计是好是坏的一个试金石, 良好的系统设计,让系统的备份,恢复以及CRASH 后的系统的恢复都变得简单, 反之,那就是一个灾难, 所以系统CRASH

39040

Android Native Crash 收集

要实现 Native Crash 的收集,主要有四个重点:知道 Crash 的发生;捕获到 Crash 的位置;获取 Crash 发生位置的函数调用栈;数据能回传到服务器。...不同的处理器,有不同的异常中断类型和中断处理方式,linux 把这些中断处理,统一为信号量,每一种异常都有一个对应的信号,可以注册回调函数进行处理需要关注的信号量。...常见的做法有四种: 第一种:直接使用系统的库,可以获取到出错文件与函数名。只不过需要自己解析函数符号,同时经常会捕获到系统错误,需要手动过滤。...第二种:在4.1.1以上,5.0以下,使用系统自带的libcorkscrew.so,5.0开始,系统中没有了libcorkscrew.so,可以自己编译系统源码中的libunwind。...只不过这个库是全平台的 android、iOS、Windows、Linux、MacOS 全都有,所以非常大,在使用的时候得把无关的平台剥离掉减小体积。

2.2K10

iOS Crash不崩溃

用户在使用App的过程中,经常遇到闪退的情况,体验不太好,本文尝试探索引发闪退的原因,以及在遇到crash的情况下,尽可能的保持程序运行,并及时上报错误。...一、crash类型 1.OC层面的crash 1.1 普通类型 NSInvalidArgumentException:非法参数异常,传入非法参数导致异常,nil参数比较常见。...2.Signal层面的crash 除了OC层面的异常捕获之外,很多内存错误、访问错误的地址产生的crash则需要利用unix标准的signal机制,注册SIGABRT, SIGBUS, SIGSEGV等信号发生时的处理函数...二、存在问题 程序闪退,用户体验不好 三、监听crash 1.任凭程序闪退并上报 1.1 NSSetUncaughtExceptionHandler 捕获OC层面的crash 参考文章 (1)AppDelegate...自动修复+捕获上报 2.1 针对普通类型Crash的处理机制 hook相关的方法,增加保护机制。

2K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券