Android SDK模拟器:使用crasher strlen-NULL复现原生崩溃遇执行问题求助
解决crasher命令找不到并复现strlen-NULL崩溃的方法
1. 确认系统版本是否支持crasher
crasher工具仅存在于eng或userdebug类型的Android系统镜像中,user版本默认不包含该工具。你可以通过以下命令确认当前系统类型:
getprop ro.build.type
如果输出是user,则需要更换为userdebug/eng版的模拟器镜像。
2. 查找并运行crasher(针对userdebug/eng版本)
如果系统是支持的版本,先查找crasher的位置:
find / -name crasher 2>/dev/null
通常会输出/system/bin/crasher,直接执行对应路径的命令:
/system/bin/crasher strlen-NULL
执行后会触发native崩溃,系统会生成tombstone文件,你可以通过adb pull /data/tombstones/tombstone_00等命令导出分析。
3. 手动复现strlen-NULL崩溃(通用方法)
如果找不到crasher,也可以自己编写一个简单的C程序来复现:
- 编写代码
crash_test.c:
#include <string.h> int main() { strlen(NULL); return 0; }
- 用NDK编译(假设NDK路径已配置):
arm-linux-androideabi-gcc crash_test.c -o crash_test --sysroot=$NDK_ROOT/platforms/android-29/arch-arm
- 将编译好的程序push到模拟器:
adb push crash_test /data/local/tmp/
- 进入shell并运行:
adb shell cd /data/local/tmp chmod +x crash_test ./crash_test
这会直接触发strlen(NULL)的native崩溃,效果和crasher工具一致。
内容的提问来源于stack exchange,提问作者René Heuven
相关产品推荐
相关产品推荐

