android C++打印堆栈
Android在Java层打印堆栈比较方便,代码如下:
try {throw new Exception("Debug xxx call stack");
}catch(Exception e) {e.printStackTrace();
}
但是在C++模块中能打印调用堆栈吗?怎么打印调用栈呢?
答案是肯定的,步骤如下:
1.修改编译脚本Andorid.mk或者Android.bp
Android.mk
LOCAL_SHARED_LIBRARIES := \libutils \libutilscallstack
Android.bp
shared_libs: ["原来的内容","libutils","libutilscallstack",],
2.修改c++文件,引入头文件,打印堆栈
#include <utils/CallStack.h>void function() {android::CallStack stack;stack.update();stack.log("function stack");
}
3.注意事项
如果C++文件定义了命令空间,请把#include <utils/CallStack.h>放在name space定义之外