1. cat sysdump.core* > vmcore
2. crash -m phys_base=0x80000000 vmlinux vmcorecrash -m phys_base=0x80000000 --cpus=2 --no_data_debug sysdump vmlinuxcrash64 -m phys_offset=0x80000000 --no_data_debug sysdump.core symbols/vmlinux
3. crash常用命令:  1. log 查看log_buf中的内容,sprd即当时内存中保存的kernel log。2. ps:查看当前系统进程信息。3. p $VAR:打印变量VAR的内容4. rd $ADDR $NUM:读取内存地址$ADDR起始的$NUM个内存信息。
4.crash> struct scatterlist -o 查看数据结构定义
struct scatterlist {[0] unsigned long page_link;[4] unsigned int offset;[8] unsigned int length;[12] dma_addr_t dma_address;
}
SIZE: 16
5.crash> struct scatterlist 0xd99efd14 -x 查看数据结构值
struct scatterlist {page_link = 3236076226, offset = 3072, length = 512, dma_address = 0
}
6、sprd_debug_last_regs_access --> cpu最后一次访问寄存器信息保存在这里,在本例子中:
$ crash> sprd_debug_last_regs_access
sprd_debug_last_regs_access = $9 = (struct sprd_debug_regs_access *) 0xcf440000
7、知道了last regs的地址,直接查看该变量:
$ crash> struct sprd_debug_regs_access 0xcf440000 -x //x表示16进制
struct sprd_debug_regs_access {vaddr = 0xf5340004, value = 0x800, stack = 0xc41b3d78, pc = 0xc0391e80, time = 0x1a0bda, status = 0x0
}
8.当前的runq信息如下:
crash> runq
9.crash> dis function -x -l 查看函数汇编代码
10.crash> p init_mm
init_mm = $3 = {mmap = 0x0, mm_rb = {rb_node = 0x0}, mmap_cache = 0x0, get_unmapped_area = 0x0, unmap_area = 0x0, ...
arm-eabi-objdump -h vmlinux
crash> bt -f 1
PID: 1      TASK: ec0a0000  CPU: 0   COMMAND: "init"#0 [<c0619270>] (__schedule) from [<c06198e0>][PC: c0619270  LR: c06198e0  SP: ec09bd98  SIZE: 136]ec09bd98: c09065c8 c042db58 00000000 000003efec09bda8: c06198e0 00ab6000 c02318c4 200f0013ec09bdb8: ffffffff c000eda8 ec09a000 bb62cd3fec09bdc8: 0000002c c0980988 c09776c8 c0011b54ec09bdd8: c0978808 dd1fcea4 c09065c0 dd1fce40ec09bde8: c061ab0c c0011b94 c09065c8 c042db58ec09bdf8: dd1fce40 ec09a000 ffffffff ec09a030ec09be08: ec84b748 ec0a0000 ec84b74c 00000002ec09be18: ec09be2c c06198e0#1 [<c06198e0>] (schedule_preempt_disabled) from [<c0618524>][PC: c06198e0  LR: c0618524  SP: ec09be20  SIZE: 16]ec09be20: 00000000 ec84b744 0008e634 c0618524#2 [<c0618524>] (__mutex_lock_slowpath) from [<c06185d0>][PC: c0618524  LR: c06185d0  SP: ec09be30  SIZE: 48]ec09be30: ec84b744 ec84b74c ec84b74c ec0a0000ec09be40: ec84b744 dd9576c8 ec84b710 c0a50a30ec09be50: c09e1f9c c0a50a30 dd1fce14 c06185d0#3 [<c06185d0>] (mutex_lock) from [<c028f71c>][PC: c06185d0  LR: c028f71c  SP: ec09be60  SIZE: 8]ec09be60: dd9576d4 c028f71c#4 [<c028f71c>] (device_shutdown) from [<c0036528>][PC: c028f71c  LR: c0036528  SP: ec09be68  SIZE: 32]ec09be68: ec09be90 c0983554 a1b2c3d4 beb16a07ec09be78: fee1dead ec09a000 00000000 c0036528#5 [<c0036528>] (kernel_restart) from [<c00366dc>][PC: c0036528  LR: c00366dc  SP: ec09be88  SIZE: 8]ec09be88: 00000000 c00366dc#6 [<c00366dc>] (sys_reboot) from [<c000f1c0>]pc : [<0005b848>]    lr : [<000160cd>]    psr: 200f0010

从sysdump中恢复logcat log:

crash -m phys_base=0x80000000 --cpus=2 --no_data_debug sysdump vmlinux
crash> extend <path>/logcat.so
crash> logcat
crash> logcat > logcat.txt

Crash 工具使用相关推荐

  1. crash工具分析linux内核,如何使用crash工具分析Linux内核崩溃转储文件

    满意答案 使用 crash 的先决条件 1. kernel 映像文件 vmlinux 在编译的时候必须指定了 -g 参数,即带有调试信息. 2. 需要有一个内存崩溃转储文件(例如 vmcore),或者 ...

  2. Crash工具实战-变量解析【转】

    转自:http://blog.chinaunix.net/uid-14528823-id-4358785.html Crash工具实战-变量解析 Crash工具用于解析Vmcore文件,Vmcore文 ...

  3. 一个suse11 sp1的crash工具版本问题

    这几年排查的各种类型的crash也比较多了,各种类型的也算见过,但是排查这个crash,走了不该走的弯路,事后显得很low,为了防止自己犯类似错误,也同时提醒后人,记录之. 内核是suse11,sp1 ...

  4. crash工具解析_crash工具和x86-64汇编基础

    在前面的文章中,已经出现了作为Linux重要调试手段之一的crash工具的身影.在后续的文章里,我们还会继续用到它.因此在这里,准备对Linux中的crash工具的原理和使用方法,做一个相对全面的介绍 ...

  5. (好文重发)朴英敏:用crash工具分析Linux内核死锁的一次实战

    本文简介: 内核死锁问题一般是读写锁(rw_semaphore)和互斥锁(mutex)引起的,本文主要讲如何通过ramdump+crash工具来分析这类死锁问题. 作者简介: 朴英敏,现就职于国内一家 ...

  6. crash工具分析sysdump使用

    一.准备环境 1)获取crash工具.注意区分版本(arm/arm64/x86_64). 2)获取对应软件版本的符号表文件(如vmlinux),可以将该文件放置 crash工具同一目录下. 3)获取s ...

  7. crash工具解析_Android Crash 工具

    crash工具解析_Android Crash 工具_weixin_39543655的博客-CSDN博客本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一.Cra ...

  8. crash工具使用方法

    下载高版本的crash工具 下载内核debug文件,如kernel-debuginfo-4.18.0-2.4.3.3.kwai.x86_64.rpm 安装步骤2中的debug文件,此步骤作用是可以加载 ...

  9. 【ARM Linux 系统稳定性分析入门及渐进 1 -- Crash 工具简介】

    文章目录 1.1 Kexec 和 Kdump 1.1.1 Kexec 加载优点 1.1.2 kdump 功能 1.1.3 kdump原理 1.2 Crash tool 1.2.1 ramdump 机制 ...

  10. linux crash,系统崩溃 - crash工具介绍

    工欲善其事,必先利其器.本文主要介绍linux下crash工具常用命令的功能和使用. 背景知识 crash是redhat的工程师开发的,主要用来离线分析linux内核转存文件,它整合了gdb工具,功能 ...

最新文章

  1. [Spring mvc 深度解析(一)] 详解Servlet
  2. 爱奇艺的架构到底有多牛?
  3. EF 5.0 帮助类 增删改查
  4. iOS 合并.a文件,制作通用静态库
  5. J - 数据结构实验:哈希表
  6. mongoose查询不到数据表中的数据的问题
  7. 交换机工作原理_交换机的作用是什么?
  8. Node.js 多版本安装配置(Window、Ubuntu 、CentOS 、Mac OS、Cloud Studio)
  9. 邀请合作如何表达_适时表达想法 才有利于彼此的合作
  10. ObjectOutputStream 和 ObjectInputStream类的简单介绍,及运用。
  11. 【华为云技术分享】万万没想到,我在夜市地摊解决了MySQL临时表空间难题~~
  12. php 谷歌搜索排名,我想在php中搜索谷歌搜索结果
  13. mysql php apache源码_用源码包安装php+mysql+apache+vbb总结
  14. 红外图像和热成像图像
  15. Transformer最新综述
  16. reg类型变量综合电路_Verilog中 reg和wire 用法和区别以及always和assign的区别
  17. 身份证复印件正确签注写法 -- 很重要!
  18. ESP32基于arduino开发的心跳体温检测系统(二)传感器的使用
  19. java基于ssm框架开发的高校实验室预约管理系统实战项目
  20. linux日志查看/项目日志查看/监控日志

热门文章

  1. Linux下实现聊天室
  2. rvm的安装, 使用rvm, 安装ruby, 以及gem的使用
  3. 区块链技术系列(3)- Fabric基础架构原理
  4. LeetCode 1053
  5. Ant Design中的表格中key的处理
  6. 求空间中点到线的最短距离(Revit二次开发)
  7. windows大小写,切换键修改lock or shift
  8. 配置分布式集群方案要考虑哪些关键点?
  9. 熵值法的Python实现
  10. 各样本观察值均加同一常数_医药数理统计学试题及答案