crash工具解析_Android Crash 工具

269 篇文章 33 订阅
订阅专栏

crash工具解析_Android Crash 工具_weixin_39543655的博客-CSDN博客本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、Crash 简介当Linux系统内核发生崩溃的时候,可以通过 KEXEC+KDUMP 等方式收集内核崩溃之前的内存,生成一个转储文件vmcore。内核开发者通过分析该vmcore文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。那么Crash就是一个被广泛使用的内核崩溃转储文件分析工具.对调试来讲,...https://blog.csdn.net/weixin_39543655/article/details/110137672

本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

af8db9b6305a6fcb297806ca34546c40.png

一、Crash 简介

Linux系统内核发生崩溃的时候,可以通过 KEXEC+KDUMP 等方式收集内核崩溃之前的 内存,生成一个转储文件vmcore。内核开发者通过分析该vmcore文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。那么Crash就是一个被广泛使用的内核崩溃转储文件分析工具.

对调试来讲,gdb是非常适合的,但gdb始终是调试native的工具,不支持kernel信息显示,比如task信息之类的。crash补足了这个短板,由Dave Anderson开发和维护的一个内存转储分析工具,是基于GDB开发的 (GDB适用于用户进程的coredump,而Crash扩展了 GDB,使其适用于 linux kernel coredump),目前它的最新版本是7.2.3。

在没有统一标准的内存转储文件的格式的情况下,Crash工具支持众多的内存转储文件格式,包括:

  • Live linux系统
  • kdump产生的正常的和压缩的内存转储文件
  • 由makedumpfile命令生成的压缩的内存转储文件
  • 由Netdump生成的内存转储文件
  • 由Diskdump生成的内存转储文件
  • 由Kdump生成的Xen的内存转储文件
  • IBM的390/390x的内存转储文件
  • LKCD生成的内存转储文件
  • Mcore生成的内存转储文件

而MTK在KE时会抓取full  dump文件:SYS_COREDUMP,则可以用crash来调试。

二、 搭建Crash 分析kernel ramdump平台

1. Crash 官方

2. 编译前确保必要的组件(ncurese和zlib),如果没有需要

982f5d8bbd9fda7c8ace9be8a0988361.png

3. 编译 ARM32 / ARM64 位的Crash

1.ARM32

219919be808a5bfc993ecd6856cee482.png

2.ARM64

da74655d56215f99425407d4d2d79db0.png

3.去除编译生成的Crash 中的多余符号

4806332813e63558a834f7a2913e1e1c.png

使用对应的vmLinux解析sysdump文件
当发生kernel crash时,会有db生成,用GAT的logviewer解开db,里面有SYS_COREDUMP,结合对应的vmlinux(必须是烧录前备份的vmlinux!)

01d17b661f742d2a9fa7681e9c6ef5d4.png

三、Crash 命令简介

Crash(计算机术语)_百度百科​baike.baidu.com

b79d562949d81d7a288e6d27660896b6.png

四、使用 Crash 分析 sysdump log

  • 1. 将 vmlinux 、crash_arm、 sysdump log 放置同一目录
  • cp out/target/product/sp9832e_1h10_go/obj/KERNEL/vmlinux reboot/
  • cp vendor/sprd/tools/crash/crash_arm reboot/

641574cbd031658fa5fc88c880959d18.png

2. 将 sysdump 所有文件 追加到一个文件中

7785feb7154ebb9daa5ff50ae0a6f4cc.png

3. 使用 crash_arm 脚本 联合 vmlinux 解析 sysdump log

如果解析失败,可以参数带一下参数的命令

32位系统使用如下:

./crash_arm vmlinux all -m phys_base=0x80000000

64位系统使用如下命令:

./crash_arm64 vmlinux all -m phys_offset=0x80000000

b3bafdea39c408f562ee8ae7e3b14028.png

4. 使用 Log 命令 将 Crash log追加到指定文件中

f1bb98bbbdc6b79bcad9ac68849374f9.png

5. 查看log,分析重启的具体原因

c1ffaa71790b67c65da9405e017da7eb.png

6. 调高Kernel log Buffer

请将如下两处修改为=21,增大kernel log buffer后,先抓一份 “进开机向导并能正常启动至idle” 的ylog。

e7f65a6379950ab5bca1ea5592ae34fa.png

五、Crash 常规调试

crash使用gdb作为它的内部引擎,crash中的很多命令和语法都与gdb相同。如果曾经使用过gdb,就会发现crash并不是很陌生。如果想获得crash更多的命令和相关命令的详细说明,可以使用crash的内部命令help来获取:

命令 说明 例子

  • |指针的快捷方式,用于代替struct/union |*page 0xc02943c0:显示0xc02943c0地址的page结构体
    files | 显示已打开的所有文件的信息 | files 462:显示进程462的已打开文件信息
    mach| 显示与机器相关的参数信息 | mach:显示CPU型号,核数,内存大小等
    sys | 显示特殊系统的数据 s|ys config:显示CONFIG_xxx配置宏状态
    timer |无参数。按时间的先后顺序显示定时器队列的数据 | timer:显示详细信息
    mod| 显示已加载module的详细信息| mod:列出所有已加载module信息
    runq| 显示runqueue信息 | runq:显示所有runqueue里的task
    tree |显示基数树/红黑树结构 | tree -t rbtree -o vmap_area.rb_node vmap_area_root:显示所有红黑树vmap_area.rb_node节点地址
    fuser| 显示哪些task使用了指定的文件/socket |fuser /usr/lib/libkfm.so.2.0.0:显示使用了该文件的所有进程
    mount| 显示已挂载的文件系统信息 |mount:当前已挂载的文件系统信息
    ipcs |显示System V IPC信息| ipcs:显示系统中System V IPC信息
    ps| 显示进程状态 |ps:类似ps命令
    struct| 显示结构体的具体内容 |struct vm_area_struct c1e44f10:显示c1e44f10结构
    union| 显示联合体的具体内容,用法与struct一致 |union bdflush_param:显示bdflush_param结构
    waitq| 列出在等待队列中的所有task。参数可以指定队列的名称、内存地址等| waitq buffer_wait:显示buffer_wait等待队列信息
    irq| 显示中断编号的所有信息| irq 18:显示中断18的信息
    list| 显示链表的内容 |list task_struct.p_pptr c169a000:显示c169a000地址所指task里p_pptr链表
    log| 显示内核的日志,以时间的先后顺序排列 |log -m:显示kernel log
    dev |显示数据关联着的块设备分配,包括端口使用、内存使用及PCI设备数据 |dev:显示字符/块设备相关信息
    sig| 显示一个或者多个task的signal-handling数据 |sig 8970:显示进程8970的信号处理相关信息
    task| 显示指定内容或者进程的task_struct的内容| task -x:显示当前进程task_struct等内容
    swap| 无参数。显示已配置好的交换设备信息 |swap:交换设备信息
    search| 在给定范围的用户、内核虚拟内存或者物理内存搜索值 |search -u deadbeef:在用户内存搜索0xdeadbeef
    bt| 显示调用栈信息| bt:显示当前调用栈
    net| 显示各种网络相关的数据| net:显示网络设备列表
    vm |显示task的基本虚拟内存信息 |vm:类似于/proc/self/maps
    btop| 把一个16进制地址转换成它的分页号 |N/A
    ptob| 该命令与btop相反,是把一个分页号转换成地址 |N/A
    vtop |显示用户或内核虚拟内存所对应的物理内存| N/A
    ptov| 该命令与vtop相反。把物理内存转换成虚拟内存 |N/A
    pte |16进制页表项转换为物理页地址和页的位设置| N/A
    alias |显示或建立一个命令的别名 |alias kp kmem -p:以后用kp命令相当于kmem -p
    foreach| 用指定的命令枚举 |foreach bt:显示所有进程的调用栈
    repeat| 循环执行指定命令 |repeat -1 p jiffies:每个1s执行p jiffies
    ascii |把16进制表示的字符串转化成ascii表示的字符串 |ascii 62696c2f7273752f:结果为/usr/lib
    set |设置要显示的内容,内容一般以进程为单位,也可以设置当前crash的内部变量 |set -p:切换到崩溃进程的上下文环境
    p| print的缩写,打印表达式的值。表达式可以为变量,也可以为结构体 |N/A
    dis |disassemble的缩写。把一个命令或者函数分解成汇编代码 |dis sys_signal:反汇编sys_signal函数
    whatis| 搜索数据或者类型的信息 |whatis linux_binfmt:显示linux_binfmt结构体
    eval |计算表达式的值,及把计算结果或者值显示为16、10、8和2进制| N/A
    kmem| 显示当前kernel使用内存状况 |kmem -i:显示kernel使用内存状况
    sym| 显示符号所在的虚拟地址,或虚拟地址对应的符号| sym jiffies:显示jiffies地址
    rd |显示指定内存的内容。缺少的输出格式是十六进制输出| rd -a linux_banner:显示linux_banner内容
    wr| 根据参数指定的写内存。在定位系统出错的地方时,一般不使用该命令 wr |my_debug_flag 1:修改my_debug_flag值为1
    gdb| 执行GDB原生命令 |gdb help:执行gdb的help命令
    extend| 动态装载或卸载crash额外的动态链接库 |N/A
    q |退出|N/A
    exit |同q,退出| N/A
    help |帮助命令 |N/A

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

crash 分析
dreamDay2016_11_11的博客
09-28 1209
crash analysis
MTK日志分析技巧
wan2g的博客
04-09 4003
1.mtklog简介:mtklog是由log生成工具MTKLogger生成的一系列问题追踪文件,其主要作用就是对系统或者应用产生的异常进行快速定位,从而解决问题。 mtklog 的分类:MDLog、Mobile Log、Network Log,可能出现的aee_exp log MD log:medom 相关底层的log Mobile Log:主要是Android log 和kernel lo...
安卓稳定性之crash详解
最新发布
似霰的博客
07-03 1386
安卓稳定性之crash详解
crash 工具
本末实验室
01-18 1145
crash 是一款可以用来分析转储文件的工具,用于分析崩溃转储文件,也可以分析动态的系统。通过官网获取和安装工具,通过 `man crash` 或者 `crash --help` 查看使用方法和说明
crash工具使用方法
bob的博客
01-02 727
crash工具
crash分析
zhaojie8324616的博客
12-31 384
crash分析内核经典实例: https://bugs.centos.org/view.php?id=13241 kmem addr 获取内存分配信息 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进...
Crash分析
gezi322的专栏
10-29 879
先找9a7bef6c.这个是用户堆栈的排布规则,规则就是这样的。2. gdb(gdb) x /2000a $sp //arm 下是寄存器名sp, x86下是寄存器名rsp...这个会把 dump user stack(用户堆栈信息)里面所有的 函数地址 转化为 函数名,根据这么函数名推测哪里crash了。
crash_log_tool.zip
03-17
《安卓手机崩溃日志分析工具——crash_log_tool详解》 在移动应用开发领域,尤其是Android平台,应用程序的稳定性是用户体验的关键因素之一。当应用出现闪退或崩溃时,开发者需要快速定位问题,以便修复并提升应用...
MTK系统DUMP之Crash-8.0.1工具
06-09
MTK(MediaTek)系统DUMP之Crash-8.0.1工具是专为基于MediaTek芯片的Android设备设计的故障排查和日志收集工具。这个工具主要用于当设备遇到崩溃或异常情况时,帮助开发者或者技术人员分析并解决系统问题。在Android...
使用GDB分析Android Crash问题
12-07
软件是人思维的产物。智者千虑,必有一失,人的思维总有缺陷,反映到软件层面上就是程序 bug。...通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。
Android Crash监控
feather(猎羽)
07-10 555
2、build.gradle中defaultConfig中externalNativeBuild->cmake和ndk的区别是什么?7、minidump文件是微软开发的用于崩溃上传的文件格式,需要工具minidump_stackwalk工具处理。4、为什么系统的Handler会kill app,我们还能做保存文件的工作?8、用addr2line工具将trace文件中的寄存器地址转为对应的符号。5、上传的日志信息,要结合混淆的Mapping文件进行分析。5、BreakPad的源码分析
高通crash分析工具
03-02
qualcomm平台system dump分析工具,使用方法crash64 vmlinux DDRCS0.BIN@加载地址,DDRCS1.BIN@加载地址 --kaslr auto
AndroidStudy_android_studio_crazy_android_notes
05-09
10. **Android性能优化**:包括内存优化、电量优化、UI流畅度优化、代码效率提升等方面,实践中可能涉及到Profile工具的使用,以及对ANR和Crash的处理。 11. **单元测试与自动化测试**:Android Studio提供了JUnit...
标志性log关键词
我叫王菜鸟
08-14 820
adb shell //输出所有event_log中的tag cat /system/etc/event-log-tags 常用tag:am_low_memory:位于AMS.killAllBackgroundProcesses或者AMS.appDiedLocked,记录当前Lru进程队列长度。 am_pss:位于AMS.recordPssSampleLocked( am_meminfo:位于AM
Crash工具介绍和常见命令使用
lunhui2016的博客
04-19 4468
本文主要介绍crash工具的使用以及常用的命令。crash工具,常用来分析内核的coredump以及应用的coredump,功能非常强大。
Crash工具基本使用及实战分享
ldinvicible的专栏
06-18 2078
Crash工具基本使用及实战分享
Android Crash之Java Crash分析
ly969434341的专栏
12-06 371
Android Crash之Java Crash分析 https://www.jianshu.com/p/8f5fc87c23c5
crash 工具使用
OnePiece
03-22 1433
crash使用案例 常用命令 dis 反汇编 list 查看链表数据结构,-H 尝尝配合使用,list device_domain_info.global -H device_domain_list struct -o -x 查看结构体成员偏移 task pid 直接查看 task_struct 结构 p 直接打印 sym 查看地址和符号对应关系 使用例程 https://blog.csdn....
写文章

热门文章

  • linux 45810
  • [LaTeX] 数学表达式-上标和下标 32222
  • 求导数(导数计算器)网站 Derivative Calculator 27063
  • 虚拟机安装Ubuntu 12.04 出现提示“Ubuntu is running in low-graphics mode?” 17155
  • Raw Socket 接收和发送数据包 16781

分类专栏

  • 网络 269篇
  • 工具 6篇
  • WiFi 35篇
  • LInux kernel 7篇
  • IPv6 16篇
  • 3GPP 1篇
  • 开源合规 8篇
  • BPF 1篇
  • linux 39篇
  • git 2篇
  • ARM 6篇
  • 数学 1篇
  • Web 16篇
  • LwM2M and Coap 2篇
  • Latex 7篇
  • HTTP 2篇
  • matplotlib
  • http2 2篇
  • C语言 40篇
  • English Study 3篇
  • 嵌入式汇编 5篇
  • 80x86 1篇
  • linux 学习 156篇
  • 电脑基础 7篇
  • 音视频 5篇
  • 数据结构与算法 7篇
  • 数字电视 5篇
  • DirectFB 5篇
  • Java 5篇
  • 嵌入式 8篇
  • 嵌入式系统 4篇
  • 读书笔记 1篇
  • 字符编码 9篇
  • 基础理论 6篇
  • 链接
  • 编译&链接 5篇
  • go 9篇
  • Python 13篇
  • SDL 1篇
  • 文件系统 4篇
  • 多媒体技术 1篇
  • FFMEPG 1篇
  • Python 28篇

最新评论

  • Linux Bridge - Part 2

    泡芙萝莉酱: 这篇关于“Linux Bridge - Part 2”的博文真是内容丰富、引人入胜,让我大开眼界!博主的细致讲解和深入剖析展示了他的专业水准和丰富经验。期待更多博主的分享,相信能够让我们共同学习进步。真诚感谢博主的辛勤付出和支持!

  • 破获ARM64位CPU下linux crash要案之神技能:手动恢复函数调用栈

    tz_or: 不得不说那些水话影响了这篇文章的质量

  • TSN综述 – 广义时钟同步协议(gPTP)

    少年,吃糖么: gPTP是基于IEEE 802.1AS-2011标准,这个标准是在PTPv2的基础上进行开发的,因此报文头可复用

  • rfc4301- IP 安全架构

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/617638813。

  • TSN综述 – 广义时钟同步协议(gPTP)

    两条眉毛: 文中的PTP message header是1588v2的,不是gPTP的

大家在看

  • Python知识点:如何使用Python进行金融数据分析 567
  • LLaMA-Factory训练数据集 126
  • 算法练习题25——leetcode3279统计重新排列后包含另一个字符串的子字符串的数目(滑动窗口 双指针 哈希)
  • [Python学习日记-26] Python 中的文件操作 870
  • 【C#生态园】构建高效HTTP请求和异常处理:深度剖析6款.NET库和框架 275

最新文章

  • IPSec之数据封装协议
  • Linux Bridge - Part 2
  • 连接跟踪(conntrack):原理、应用及 Linux 内核实现
2024年35篇
2023年115篇
2022年236篇
2021年128篇
2020年75篇
2019年40篇
2015年16篇
2014年43篇
2013年105篇
2012年87篇
2011年70篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家廊坊商丘玻璃钢卡通雕塑汕头市玻璃钢雕塑制作陕西动物玻璃钢雕塑制作石龙玻璃钢雕塑制品常州玻璃钢卡通雕塑设计漯河公园不锈钢玻璃钢卡通雕塑拉萨玻璃钢人物雕塑郁南玻璃钢雕塑厂家十堰玻璃钢雕塑考拉批发济宁玻璃钢雕塑制作厂家雕塑玻璃钢雕塑公司长春园林玻璃钢雕塑生产厂家长春 玻璃钢雕塑商场美陈吊饰定制玻璃钢佛像雕塑工艺品梅州玻璃钢雕塑生产通用玻璃钢花盆哪里买河北开业商场美陈制作浙江景区玻璃钢雕塑厂家伊春动物玻璃钢雕塑价格余杭区玻璃钢金属雕塑设计十堰玻璃钢雕塑摆件厂商太原玻璃钢花盆批发浙江超市商场美陈研发商丘附近玻璃钢景观雕塑厂家焦作玻璃钢雕塑经销商玻璃钢花盆叠一起怎么打开乌海雕塑玻璃钢卡通修武玻璃钢雕塑费用四川玻璃钢雕塑摆件生产香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化