Android 系统调试技巧(1)系统内存调试
1. 前言
总结Android调试过程中关于系统内存方面的方法
2. 内存调试
Adb shell dumpsys procstats --hours X
adb remount
adb push cpu_monitor /system/xbin/cpu_monitor
adb shell chmod 777 /system/xbin/cpu_monitor
测试游戏前后所需要记录的准确数据:
(1)cpu_monitor -u 1 -m 500
记录下以下红色框中的Anon、slab、 cache 、sysfre、cmafre数据

(2)/sys/kernel/debug/ion/cma free 和busy数据

(3)0procmem {target game process pid} | grep /dev/pvrsrvkm
统计下面红色框内pvrsrvkm 内存total使用

3. 内存泄露
(1)Android Native 内存泄露
- Android DDMS Native heap debug
- Android Valgrind debug
- Android AddressScanitizer debug
(2)Linux kernel内存泄露
Slab内存分布调试
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SLAB_LEAK=y
CONFIG_SLABINFO=y


adb shell echo 1 > /sys/kernel/debug/tracing/tracing_enabled
adb shell echo 1 > /sys/kernel/debug/tracing/tracing_on
adb shell echo > /sys/kernel/debug/tracing/trace
adb shell echo > /sys/kernel/debug/tracing/set_event
adb shell echo kfree kmalloc kmalloc_node kmem_cache_alloc kmem_cache_alloc_node kmem_cache_free >> /sys/kernel/debug/tracing/set_event
adb shell cat /sys/kernel/debug/tracing/trace_pipe > /data/trace.log

(3)ION内存泄露
cat /sys/kernel/debug/ion/heaps/cma

lsof | grep /dev/ion

lsof | grep dmabuf

showmem {可疑目标进程$PID}| grep dmabuf

4. 内存溢出
Armv8 64bit平台内核内核线程栈配置:默认16K,可调整;

栈底溢出检查
配置:CONFIG_STACK_TRACER=y
# mount -t debugfs none /sys/kernel/debug
# echo 1 > /proc/sys/kernel/stack_tracer_enabled
# cd /sys/kernel/debug/tracing/
# cat stack_max_size
# cat stack_trace
定期对stack_max_size 和 stack_trace进行采样,观察栈增长的可疑点
栈顶溢出检查
配置:CONFIG_CC_STACKPROTECTOR=y
栈顶越界,gcc提供了支持。打开内核配置CONFIG_CC_STACKPROTECTOR后,会打 开编译选项-fstack-protector.
栈顶溢出检查原理是: 在进程启动的时候, 栈顶后面放置一个预先设置好的stack canary(哨兵), 当栈发生溢出的时候会破坏stack canary的值, 当stack canary的值被破坏的时候, 内核就会直接触发panic。
静态代码编译检查
配置:CONFIG_FRAME_WARN=2048
查看编译时是否有编译警告:warning: the frame size of xxx bytes is larger then 2048 bytes [-Wframe-larger-than=]
如果有可疑的栈溢出死机,可以再适当调小WARN值,排查较大栈使用模块;
- 分享
- 举报
暂无数据-
浏览量:5427次2021-03-29 14:17:09
-
浏览量:5189次2021-03-30 14:17:51
-
浏览量:6285次2021-03-30 14:44:45
-
浏览量:6607次2021-03-29 15:00:21
-
浏览量:6148次2020-10-15 15:43:43
-
浏览量:7477次2020-12-19 15:34:44
-
浏览量:3204次2022-09-30 16:48:25
-
浏览量:5513次2022-07-24 15:47:30
-
浏览量:5713次2020-12-19 16:14:06
-
浏览量:6196次2021-03-31 15:36:17
-
浏览量:3339次2020-11-10 14:23:32
-
浏览量:5225次2021-03-26 16:03:04
-
浏览量:1656次2024-01-25 15:08:45
-
浏览量:9629次2020-11-13 14:54:14
-
浏览量:2640次2020-12-30 16:54:40
-
浏览量:5237次2017-11-30 17:16:20
-
浏览量:7676次2020-09-28 16:30:39
-
浏览量:11008次2022-10-12 09:28:15
-
浏览量:19578次2022-09-30 16:51:48
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
free-jdx
微信支付举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明

微信扫码分享
QQ好友