方法:
下载my_parse_stack.py 到android sdk目录,然后执行 ./my_parse_stack.py tombstone_xx 即可打印出调用堆栈。
想要让cpp crash的时候可以被android捕捉,保存到tombstone中,则需要native app 不对信号量做处理。
当然,如果一定要在代码中捕捉信号量,并打印对应的堆栈信息,方法如下:
1、代码
android native c++打印堆栈
android::CallStack stack;
stack.update(2); // void update(int32_t ignoreDepth=1, pid_t tid=BACKTRACE_CURRENT_THREAD);
android::String8 info = stack.toString(); // 获得堆栈内容
CLog::Log("CrashLog/device_exception", LOGCATCH, info.string()); // 输出到log中
2、需要在Android.mk中libutils.so库
对应的class CallStack的代码实现在system/core/libutils/CallStack.cpp中,头文件定义在system/core/include/utils/CallStack.h,如下为android 5.1 的头文件声明:
class C