diff --git a/src/debug.cpp b/src/debug.cpp index befd73a38..ad02c5110 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -101,7 +101,7 @@ void DebugStack::print(FILE *file, bool everything) for(int i=0; i g_debug_stacks; JMutex g_debug_stacks_mutex; @@ -122,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); diff --git a/src/debug.h b/src/debug.h index 98fe6e129..5150758be 100644 --- a/src/debug.h +++ b/src/debug.h @@ -145,6 +145,7 @@ struct DebugStack { DebugStack(threadid_t id); void print(FILE *file, bool everything); + void print(std::ostream &os, bool everything); threadid_t threadid; char stack[DEBUG_STACK_SIZE][DEBUG_STACK_TEXT_SIZE]; @@ -156,6 +157,7 @@ extern core::map g_debug_stacks; extern JMutex g_debug_stacks_mutex; extern void debug_stacks_init(); +extern void debug_stacks_print_to(std::ostream &os); extern void debug_stacks_print(); class DebugStacker