util: Add function logger helpers

This commit is contained in:
Jakob Bornecrantz 2011-01-23 21:28:44 +01:00
parent a82408c353
commit b7d2919e8e
2 changed files with 72 additions and 0 deletions

View File

@ -359,6 +359,41 @@ const char *u_prim_name( unsigned prim )
#ifdef DEBUG
int fl_indent = 0;
const char* fl_function[1024];
int debug_funclog_enter(const char* f, const int line, const char* file)
{
int i;
for (i = 0; i < fl_indent; i++)
debug_printf(" ");
debug_printf("%s\n", f);
assert(fl_indent < 1023);
fl_function[fl_indent++] = f;
return 0;
}
void debug_funclog_exit(const char* f, const int line, const char* file)
{
--fl_indent;
assert(fl_indent >= 0);
assert(fl_function[fl_indent] == f);
}
void debug_funclog_enter_exit(const char* f, const int line, const char* file)
{
int i;
for (i = 0; i < fl_indent; i++)
debug_printf(" ");
debug_printf("%s\n", f);
}
#endif
#ifdef DEBUG
/**

View File

@ -279,6 +279,43 @@ debug_dump_flags(const struct debug_named_value *names,
unsigned long value);
/**
* Function enter exit loggers
*/
#ifdef DEBUG
int debug_funclog_enter(const char* f, const int line, const char* file);
void debug_funclog_exit(const char* f, const int line, const char* file);
void debug_funclog_enter_exit(const char* f, const int line, const char* file);
#define DEBUG_FUNCLOG_ENTER() \
int __debug_decleration_work_around = \
debug_funclog_enter(__FUNCTION__, __LINE__, __FILE__)
#define DEBUG_FUNCLOG_EXIT() \
do { \
(void)__debug_decleration_work_around; \
debug_funclog_exit(__FUNCTION__, __LINE__, __FILE__); \
return; \
} while(0)
#define DEBUG_FUNCLOG_EXIT_RET(ret) \
do { \
(void)__debug_decleration_work_around; \
debug_funclog_exit(__FUNCTION__, __LINE__, __FILE__); \
return ret; \
} while(0)
#define DEBUG_FUNCLOG_ENTER_EXIT() \
debug_funclog_enter_exit(__FUNCTION__, __LINE__, __FILE__)
#else
#define DEBUG_FUNCLOG_ENTER() \
int __debug_decleration_work_around
#define DEBUG_FUNCLOG_EXIT() \
do { (void)__debug_decleration_work_around; return; } while(0)
#define DEBUG_FUNCLOG_EXIT_RET(ret) \
do { (void)__debug_decleration_work_around; return ret; } while(0)
#define DEBUG_FUNCLOG_ENTER_EXIT()
#endif
/**
* Get option.
*