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