工具
平臺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 |