searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Android 系统各个部分打印堆栈的方法

2022-12-12 02:47:08
790
0

一、在c/c++库中打印调用栈

C++代码架构经常特别复杂,可以使用android::CallStack将所在线程的调用栈打印出来
基本用法:
先引用头文件:
#inclucde<utils/CallStack.h>
#include<utils/Log.h>
然后在要打印的地方添加如下代码:
android::CallStack stack;
stack.update();
stack.dump(1); //输出到printf
stack.log(debug); //输出到logcat
 
添加之后,在logcat就可以看到对应log

二、在kernel中打印调用栈

在kernel代码中需要打印函数调用栈的地方添加代码
dump_stack();
或者使用
WARN_ON(1);
 
然后通过cat /proc/kmsg即可查看到对应的堆栈log
 

三、在java App中打印调用栈

这个最简单,直接在需要打印的地方增加语句
new Exception().printStackTrace();
 
在logcat中就可以看到对应的调用栈了。
 
附上一张经典Android 系统架构图:
 
0条评论
0 / 1000
朱****春
17文章数
3粉丝数
朱****春
17 文章 | 3 粉丝
原创

Android 系统各个部分打印堆栈的方法

2022-12-12 02:47:08
790
0

一、在c/c++库中打印调用栈

C++代码架构经常特别复杂,可以使用android::CallStack将所在线程的调用栈打印出来
基本用法:
先引用头文件:
#inclucde<utils/CallStack.h>
#include<utils/Log.h>
然后在要打印的地方添加如下代码:
android::CallStack stack;
stack.update();
stack.dump(1); //输出到printf
stack.log(debug); //输出到logcat
 
添加之后,在logcat就可以看到对应log

二、在kernel中打印调用栈

在kernel代码中需要打印函数调用栈的地方添加代码
dump_stack();
或者使用
WARN_ON(1);
 
然后通过cat /proc/kmsg即可查看到对应的堆栈log
 

三、在java App中打印调用栈

这个最简单,直接在需要打印的地方增加语句
new Exception().printStackTrace();
 
在logcat中就可以看到对应的调用栈了。
 
附上一张经典Android 系统架构图:
 
文章来自个人专栏
Android系统开发
17 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0