android打印调用堆栈
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android打印调用堆栈相关的知识,希望对你有一定的参考价值。
参考技术A 修改android.bp,加入callstack模块注意这里android是命名空间,如果已经在android命名空间内则不需要写android::
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打印调用堆栈的主要内容,如果未能解决你的问题,请参考以下文章