X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fcitserver.c;h=71ec7e05e935dfcf5a1b945fdc9729ba367c61d8;hb=13b5a9155c7af455c92e4ae2848ada4c372e42ce;hp=cfe5c1b1a13984a4df6bb0163051d476b663bcb7;hpb=9ff614d3b30704e53b7ba1d99fe6e2c6ba584b23;p=citadel.git diff --git a/citadel/citserver.c b/citadel/citserver.c index cfe5c1b1a..71ec7e05e 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -106,6 +106,32 @@ void cit_backtrace(void) #endif } +void cit_oneline_backtrace(void) +{ +#ifdef HAVE_BACKTRACE + void *stack_frames[50]; + size_t size, i; + char **strings; + StrBuf *Buf; + + size = backtrace(stack_frames, sizeof(stack_frames) / sizeof(void*)); + strings = backtrace_symbols(stack_frames, size); + if (size > 0) + { + Buf = NewStrBuf(); + for (i = 1; i < size; i++) { + if (strings != NULL) + StrBufAppendPrintf(Buf, "%s : ", strings[i]); + else + StrBufAppendPrintf(Buf, "%p : ", stack_frames[i]); + } + free(strings); + CtdlLogPrintf(CTDL_ALERT, "%s\n", ChrPtr(Buf)); + FreeStrBuf(&Buf); + } +#endif +} + /* * print the actual stack frame. */