Android打印堆栈的方法

Posted 他叫小黑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android打印堆栈的方法相关的知识,希望对你有一定的参考价值。

打印调用堆栈可以直接把问题发生时的函数调用关系打出来,非常有利于理解函数调用关系,这个对源代码逻辑研究是很有帮助的。

Java

new Throwable().printStackTrace(); 

很简单。

Native C++

在mk中要添加下面的库:

LOCAL_SHARED_LIBRARIES := \\
      libutils \\
      libbinder \\

android P上发现CallStack不在libutils,而是在libutilscallstack,故要改成:

LOCAL_SHARED_LIBRARIES := \\
      libutilscallstack \\

源码路径:/system/core/libutils/CallStack.cpp

包含下面头文件:

include <utils/CallStack.h>
include <binder/IPCThreadState.h>

执行下面方法打印堆栈信息:

CallStack cs("TAG");//打印堆栈信息

pid_t pid = IPCThreadState::self()->getCallingPid();
ALOGV("call pid %d", pid);//打印进程ID

好文推荐

以上是关于Android打印堆栈的方法的主要内容,如果未能解决你的问题,请参考以下文章

Android打印堆栈的方法

Android打印堆栈的方法

Android adb命令打印activity堆栈

android打印调用堆栈

利用Xposed Hook打印Java函数调用堆栈信息的几种方法

Android系统源码或内核中打印函数调用堆栈(打印堆栈)