X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fdebug.cpp;h=ad02c5110583c1c979e1773694a22d8acd6ab042;hb=7d37913ea4f83807c508cec81b39744d69f481f8;hp=9fbdf7a396491d9c8d2304c44ad737ea41188268;hpb=fa64103aa87a8f0f2a3351bb4a54e93e8ade1082;p=dragonfireclient.git diff --git a/src/debug.cpp b/src/debug.cpp index 9fbdf7a39..ad02c5110 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -21,7 +21,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "debug.h" #include #include -#include "porting.h" /* Debug output @@ -33,6 +32,8 @@ void debugstreams_init(bool disable_stderr, const char *filename) { if(disable_stderr) g_debugstreams[0] = NULL; + else + g_debugstreams[0] = stderr; if(filename) g_debugstreams[1] = fopen(filename, "a"); @@ -43,6 +44,9 @@ void debugstreams_init(bool disable_stderr, const char *filename) fprintf(g_debugstreams[1], " Separator \n"); fprintf(g_debugstreams[1], "-------------\n\n"); } + + DEBUGPRINT("Debug streams initialized, disable_stderr=%d\n", + disable_stderr); } void debugstreams_deinit() @@ -64,9 +68,9 @@ Nullstream dummyout; void assert_fail(const char *assertion, const char *file, unsigned int line, const char *function) { - DEBUGPRINT("\nIn thread %x:\n" + DEBUGPRINT("\nIn thread %lx:\n" "%s:%d: %s: Assertion '%s' failed.\n", - (unsigned int)get_current_thread_id(), + (unsigned long)get_current_thread_id(), file, line, function, assertion); debug_stacks_print(); @@ -74,8 +78,6 @@ void assert_fail(const char *assertion, const char *file, if(g_debugstreams[1]) fclose(g_debugstreams[1]); - //sleep_ms(3000); - abort(); } @@ -88,17 +90,18 @@ DebugStack::DebugStack(threadid_t id) threadid = id; stack_i = 0; stack_max_i = 0; + memset(stack, 0, DEBUG_STACK_SIZE*DEBUG_STACK_TEXT_SIZE); } void DebugStack::print(FILE *file, bool everything) { - fprintf(file, "DEBUG STACK FOR THREAD %x:\n", - (unsigned int)threadid); + fprintf(file, "DEBUG STACK FOR THREAD %lx:\n", + (unsigned long)threadid); for(int i=0; i g_debug_stacks; JMutex g_debug_stacks_mutex; @@ -119,6 +140,21 @@ void debug_stacks_init() g_debug_stacks_mutex.Init(); } +void debug_stacks_print_to(std::ostream &os) +{ + JMutexAutoLock lock(g_debug_stacks_mutex); + + os<<"Debug stacks:"<::Iterator + i = g_debug_stacks.getIterator(); + i.atEnd() == false; i++) + { + DebugStack *stack = i.getNode()->getValue(); + stack->print(os, false); + } +} + void debug_stacks_print() { JMutexAutoLock lock(g_debug_stacks_mutex); @@ -195,7 +231,8 @@ DebugStacker::~DebugStacker() } -#ifdef _WIN32 +#ifdef _MSC_VER +#if CATCH_UNHANDLED_EXCEPTIONS == 1 void se_trans_func(unsigned int u, EXCEPTION_POINTERS* pExp) { dstream<<"In trans_func.\n"; @@ -221,6 +258,7 @@ void se_trans_func(unsigned int u, EXCEPTION_POINTERS* pExp) } } #endif +#endif