工具
平台Android10代码中包含crash工具,路径和内容如下:
calm.xia@shand20[12:15:35]:~/10_automotive/vendor/sprd/tools/crash$ tree -L 4
.
├── pycrash
│ ├── bin
│ │ ├── crash -> crash_arm64
│ │ ├── crash_arm
│ │ ├── crash_arm64
│ │ ├── crash_vmm
│ │ ├── crash_x86
│ │ ├── crash_x86_64
│ │ └── pycrash
│ ├── extensions
│ │ ├── arm
│ │ │ ├── dminfo.so
│ │ │ ├── echo.so
│ │ │ ├── eppic.so
│ │ │ ├── gcore.so
│ │ │ ├── snap.so
│ │ │ └── trace.so
│ │ ├── arm64
│ │ │ ├── dminfo.so
│ │ │ ├── echo.so
│ │ │ ├── eppic.so
│ │ │ ├── gcore.so
│ │ │ ├── snap.so
│ │ │ └── trace.so
│ │ ├── dminfo.so
│ │ ├── echo.so
│ │ ├── eppic.so
│ │ ├── gcore.so
│ │ ├── snap.so
│ │ ├── trace.so
│ │ └── x86_64
│ │ ├── dminfo.so
│ │ ├── echo.so
│ │ ├── eppic.so
│ │ ├── gcore.so
│ │ ├── snap.so
│ │ └── trace.so
│ ├── install
│ ├── readme
│ └── utils
│ └── readelf
└── Usage
7 directories, 35 files
可以看到集成了ARM和X86平台32位和64位的crash工具,且默认crash工具是指向crash_arm64。
使用方法
查看crash工具的使用方法:
calm.xia@shand24[11:24:37]:~/avm0514/ylog/SYSDUMP/1$ cat ~/10_automotive/vendor/sprd/tools/crash/Usage
For ARM(7731, 9630, 9832 ..)
crash_arm -m phys_base=0x80000000 vmlinux sysdump.core --cpus 8
For ARM64(9850, 9860)
crash_arm64 -m phys_offset=0x80000000 vmlinux sysdump.core --cpus 8
For X86_64(9851, 9861, iSharkL2)
crash_x86_64 -m phys_base=0x34200000 vmlinux sysdump.core --cpus 8
-
注意点:
从使用方法可知,我们需要提前准备好一些材料:vmlinx
、sysdump.core
文件。
vmlinux从当前Android版本out目录获取;sysdump.core 是设备发生故障时dump到SD卡的文件(dump的方式每个平台会不一样,这里指unisoc平台)。 -
Tips:
效率:很多时候我们的开发环境是交叉的:windows上日常办公+Linux开发调试(远程服务器),由于dump文件很大
直接传输到Linux服务器会很耗时
,建议将dump文件压缩后在传到Linux服务器解压分析。
给个我实际遇到的情况,感受一下~:
压缩 | Size | Time |
---|---|---|
YES | 0.99GB |
about 2m20s |
NO | 3.83GB |
about 50m |