From 5540acb6765d24ca0257a303beee84cfa139a49f Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka Date: Mon, 3 Sep 2012 18:35:32 +0900 Subject: [PATCH] Add backtrace tool Change-Id: I2795bedf8d8fd545ae411e74b65770d520c715c4 --- native/jni/src/defines.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/native/jni/src/defines.h b/native/jni/src/defines.h index 9b530077a..28661ab20 100644 --- a/native/jni/src/defines.h +++ b/native/jni/src/defines.h @@ -83,12 +83,38 @@ static inline void dumpWordInt(const int *word, const int length) { AKLOGI("i[ %s ]", charBuf); } +#ifndef __ANDROID__ +#define ASSERT(success) do { if(!success) { showStackTrace(); assert(success);};} while (0) +#define SHOW_STACK_TRACE do { showStackTrace(); } while (0) + +#include +#include +static inline void showStackTrace() { + void *callstack[128]; + int i, frames = backtrace(callstack, 128); + char **strs = backtrace_symbols(callstack, frames); + for (i = 0; i < frames; ++i) { + if (i == 0) { + AKLOGI("=== Trace ==="); + continue; + } + AKLOGI("%s", strs[i]); + } + free(strs); +} +#else +#define ASSERT(success) +#define SHOW_STACK_TRACE +#endif + #else #define AKLOGE(fmt, ...) #define AKLOGI(fmt, ...) #define DUMP_RESULT(words, frequencies, maxWordCount, maxWordLength) #define DUMP_WORD(word, length) #define DUMP_WORD_INT(word, length) +#define ASSERT(success) +#define SHOW_STACK_TRACE #endif #ifdef FLAG_DO_PROFILE