Improve debug stack printing interface
parent
e5650bb549
commit
6153a2fb10
|
@ -101,7 +101,7 @@ void DebugStack::print(FILE *file, bool everything)
|
|||
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 +113,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 +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:"<<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);
|
||||
|
|
|
@ -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<threadid_t, DebugStack*> 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
|
||||
|
|
Loading…
Reference in New Issue