Add backtrace call stack for debugging

This commit is contained in:
vemax78 2013-11-10 22:07:55 +01:00
parent d5b2c8fe8b
commit db29a6228e
2 changed files with 26 additions and 0 deletions

View File

@ -160,3 +160,26 @@ int capwap_check_memory_leak(int verbose) {
return ((g_memoryblocks != NULL) ? 1 : 0); return ((g_memoryblocks != NULL) ? 1 : 0);
} }
/* Backtrace call stack */
void capwap_backtrace_callstack(void) {
int i;
int count;
char** functions;
void* buffer[BACKTRACE_BUFFER];
/* */
count = backtrace(buffer, BACKTRACE_BUFFER);
if (count) {
functions = backtrace_symbols(buffer, count);
if (functions) {
/* Skipping capwap_backtrace_callstack function print out */
for (i = 1; i < count; i++) {
capwap_logging_debug("\t%s", functions[i]);
}
free(functions);
}
}
}

View File

@ -19,6 +19,8 @@ void capwap_free_debug(void* p, const char* file, const int line);
int capwap_check_memory_leak(int verbose); int capwap_check_memory_leak(int verbose);
void capwap_dump_memory(void); void capwap_dump_memory(void);
void capwap_backtrace_callstack(void);
#else #else
#define DEBUG_BREAKPOINT() #define DEBUG_BREAKPOINT()
@ -30,6 +32,7 @@ void capwap_dump_memory(void);
#define capwap_free(x) free(x) #define capwap_free(x) free(x)
#define capwap_check_memory_leak(x) (0) #define capwap_check_memory_leak(x) (0)
#define capwap_dump_memory() (0) #define capwap_dump_memory() (0)
#define capwap_backtrace_callstack() (0)
#endif #endif