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

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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值