]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/debug.cpp
Menu tuning WIP
[dragonfireclient.git] / src / debug.cpp
index a19186232a5b8d6e735b2db172ff5c7044135b0d..a197913a964dfd229698ad332d63398885a9aa42 100644 (file)
@@ -44,9 +44,6 @@ 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()
@@ -68,9 +65,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();
@@ -95,13 +92,13 @@ DebugStack::DebugStack(threadid_t id)
 
 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<stack_max_i; i++)
        {
                if(i == stack_i && everything == false)
-                       continue;
+                       break;
 
                if(i < stack_i)
                        fprintf(file, "#%d  %s\n", i, stack[i]);
@@ -113,6 +110,24 @@ void DebugStack::print(FILE *file, bool everything)
                fprintf(file, "Probably overflown.\n");
 }
 
+void DebugStack::print(std::ostream &os, bool everything)
+{
+       os<<"DEBUG STACK FOR THREAD "<<(unsigned long)threadid<<": "<<std::endl;
+
+       for(int i=0; i<stack_max_i; i++)
+       {
+               if(i == stack_i && everything == false)
+                       break;
+
+               if(i < stack_i)
+                       os<<"#"<<i<<"  "<<stack[i]<<std::endl;
+               else
+                       os<<"(Leftover data: #"<<i<<"  "<<stack[i]<<")"<<std::endl;
+       }
+
+       if(stack_i == DEBUG_STACK_SIZE)
+               os<<"Probably overflown."<<std::endl;
+}
 
 core::map<threadid_t, DebugStack*> g_debug_stacks;
 JMutex g_debug_stacks_mutex;
@@ -122,6 +137,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:"<<std::endl;
+
+       for(core::map<threadid_t, DebugStack*>::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);