如何在Android Native层进行函数调用堆栈打印

Android为方便Native层打印函数的调用堆栈,专门在system/core/libutils下设计了CallStack.cpp类
如果需要打印Native的stack只需要在自己的代码的mk文件中添加对libutils.so添加依赖,在类文件中include 头文件。

实现方法如下:

#include 
CallStack stack("powered by lagrange");

在编译文件添加对libutils.so的依赖,如下:

Android.mk
LOCAL_SHARED_LIBRARIES += libutils

该方案的缺点:

  1. 需要修改编译文件,有时候依赖libutils会不成功
  2. 只能在cpp文件中使用,无法在.c文件中使用

为解决该问题,本人百度、google研究了个遍,各种攻略都以失败告终,自己也相当郁闷,
难道就没有一个简单通用方法在c/c++文件中打印堆栈吗?
答案是肯定的

自己去研究了下CallStack .cpp,突发灵感,只要稍微对CallStack .cpp做修改,即可搞定这个问题!!!&

你可能感兴趣的:(如何在Android Native层进行函数调用堆栈打印)