Android 打开coredump功能

Android 打开coredump功能_第1张图片
最近要用coredump打印 c++代码在 NDK 环境中编译生成的可执行文件 所生成的错误信息,说白了就是为了调试。
然后百度怎么用coredump后 就一顿操作 。发现 设置完 ulimit -c unlimited后再次执行程序 ,还是不会打印带 (core dumped) 的错误Segmentation fault (core dumped),也没有你们文章所提到的什么 /proc/sys/kernel/core_uses_pid/proc/sys/kernel/core_patten 文件。excuse me ? 原来 Android系统的linux内核有没有打开coredump功能 。

kernel中打开coredump功能

1.到 系统源码 kernel目录下执行 make menuconfig (code不同可能文件目录不同,根据项目来具体操作)
在这里插入图片描述
2. 选择 Userspace binary formats 选项Android 打开coredump功能_第2张图片
3.打开Enable core dump support功能,然后保存
Android 打开coredump功能_第3张图片

配置coredump的存储位置

一般临时更改存储位置 只需要将core文件存储位置写入到 /proc/sys/kernel/core_pattern

#echo "1" > /proc/sys/kernel/core_uses_pid
#echo "/local/log/core-%e-%p" > /proc/sys/kernel/core_pattern
//把dump文件存放目录改到local/log下。

但是系统重启后,该配置会失效.
所以对于android系统可以将配置该文件的命令写入到init.rc(不同项目可找到对应rc文件)中.

setrlimit 4  -1 -1      

mkdir /data/coredump 0777 system system

write /proc/sys/kernel/core_pattern  /data/coredump/core.%e.%p

测试代码:
Android 打开coredump功能_第4张图片

查看coredump文件

一般使用NDK环境中gdb 就能查看

gdb  ./可运行程序  coredump文件

Android 打开coredump功能_第5张图片

Android系统coredump

你可能感兴趣的:(疑难杂症,小知识)