Android 打開coredump功能

在這裏插入圖片描述
最近要用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 選項在這裏插入圖片描述
3.打開Enable core dump support功能,然後保存
在這裏插入圖片描述

配置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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章