Java教程

安卓源码中打印调用堆栈的方法

本文主要是介绍安卓源码中打印调用堆栈的方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Native层打印调用堆栈

首先,先进入需要添加堆栈的进程代码,并在其Android.bp中添加shared_libs libutilscallstack

cc_library {
    name: "libbinder",
    ......
    shared_libs: [
        "liblog",
        "libcutils",
        "libutils",
		"libutilscallstack",
    ],
    ......
}

然后在对应的代码处添加

// 先添加头文件
#include <utils/CallStack.h>

// 引用对象
using ::android::CallStack;

Status ServiceManager::addService(const std::string& name, const sp<IBinder>& binder, bool allowIsolated, int32_t dumpPriority) {
    ......
    // 或者直接使用 CallStack stack("native");
    // 替换下述的三条语句,这样日志的等级为 ANDROID_LOG_DEBUG
    CallStack stack; 
    stack.update();
	stack.log("native", ANDROID_LOG_ERROR);
    ......
}

Java侧的调用堆栈打印

Java侧的调用堆栈打印比较简单,直接在需要打印的地方添加如下代码即可

RemoteException exp = new RemoteException("java");
exp.printStackTrace();

这篇关于安卓源码中打印调用堆栈的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!