函数调用栈打印"/>
函数调用栈打印
Java打印
// 方式一
Exception e = new Exception("Audio");
e.printStackTrace();// 方式二
Log.i("Audio", Log.getStackTraceString(new Throwable()));
Native C++
#include <utils/CallStack.h>……
android::CallStack cs("Audio");
……
注意:新版本的 callstack 类放入了新的so中,因此可能会报找不到Callstack的错:
error: undefined symbol: android::CallStack::CallStack(char const*, int)
>>> referenced by xxxxxxxxxx
在mk/bp文件中加入新的so即可:
LOCAL_SHARED_LIBRARIES += libutilscallstack
Native C
通过extern “C”,C语言调用C++方法,利用CallStack完成。
// 创建C++文件,如callstack.cpp
#include <utils/CallStack.h>extern "C" void dumping_callstack(void);void dumping_callstack(void) {android::CallStack cs("Audio");
}// =============================================
// 创建头文件,如callstack.h
void dumping_callstack(void);
callstack.cpp 加入编译:
// 在 mk/bp 文件的 LOCAL_SRC_FILES 里加入callstack.cpp,LOCAL_SHARED_LIBRARIES中加入libutils
LOCAL_SRC_FILES += callstack.cppLOCAL_SHARED_LIBRARIES += libutils
调用打印:
#include "callstack.h"...
dumping_callstack();
...
更多推荐
函数调用栈打印
发布评论