coredump 可以用来调试android native 进程的异常
1、coredump 在android中打开
设置coredump 大小
ulimit -c unlimited //不限制coredump 大小,也可以设置为具体值
2、设置coredump 文件名称,与路径
echo "1" > /proc/sys/kernel/core_uses_pid //设置生成coredump的文件名带有 异常进程的pid
echo "/data/log/core-%e-%p" > /proc/sys/kernel/core_pattern 设置生成coredump的路径为 /data/log ,
3、使用ndk或源码编译 对应平台 带有symbols 信息的二进制文件
ndk-build NDK_DEBUG=1 module
4、push 到手机中,更改权限,运行生成core文件
5、将data/log中的core文件导出来,使用对应平台的gdb进行调试
gdb module core
上面这些动作,只能为native程序产生coredump,对于由zygote fork的apk进程则不会生成coredump,因为zygote在做初始化的时候会忽略Linux的配置,使用默认不生成coredump的配置,system server同样是由zygote fork的,所以也不会产生coredump,所以如果需要为system server配置生成coredump,如果其他apk进程需要产生coredump同样需要在开机初始化的时候为zygote做特殊的设置
所谓的特殊设置就是将zygote的启动参数中应用rlimit的配置