sunwengang blog

because it's there

  1. 1. Java
  2. 2. C++

在Android代码中可以通过了解函数的CallStack加速调试和分析过程,本文说明如何在Android运行时加入CallStack及Android P上的注意点。

Java

1
2
import android.util.Log; 
Log.d("yourTag", Log.getStackTraceString(new Exception()));

C++

Android 9以前CallStack call是被build进libutils, framework大部分service都是link了该lib,因此可以直接使用Callstack。
Android 9开始后CallStack被build进libutilscallstack,因此直接使用Callstack会报undefined reference to ‘android::CallStack::CallStack 在Android.bp或Android.mk中加入”libutilscallstack” 即可.

1
2
3
4
5
6
7
8
9
10
#include <utils/CallStack.h>

ALOGD("dump callstack");
android::CallStack stack;
stack.update();
stack.dump("yourTag");
// stack.log("yourTag"); //callstack LOG_TAG

Methods:
adb logcat | grep yourTag

本文作者 : sunwengang
本文使用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议
本文链接 : http://wizzie.top/2019/07/16/2019/190716_debug_ancdoid_callstack/

本文最后更新于 天前,文中所描述的信息可能已发生改变