Hi Mathieu,
This is a great advice! However, when adding blargh() function from the gridflow.c inside the sys_vgui (s_inter.c) so that when the debug is on it outptus a trace for each call, it appears it only manages to do one level which is obviously the sys_vgui call itself. Why is it not able to trace further back?
void blargh(void) { #ifdef MACOSX fprintf(stderr,"unhandled exception\n"); #else int i; void *array[25]; int nSize = backtrace(array, 25); char **symbols = backtrace_symbols(array, nSize); for (i=0; i<nSize; i++) fprintf(stderr,"%d: %s\n",i,symbols[i]); free(symbols); #endif }
void sys_vgui(char *fmt, ...) {
<snip>
if (sys_debuglevel & DEBUG_MESSUP) { blargh(); fprintf(stderr, "%s", sys_guibuf + sys_guibufhead); }
<snip>
}
Before you invest too much time in that, you should know that that stuff has changed a lot in 0.43, so its likely anything you did in 0.42 would not apply to 0.43
.hc
On Nov 21, 2010, at 10:40 AM, Ivica Ico Bukvic wrote:
Hi Mathieu,
This is a great advice! However, when adding blargh() function from the gridflow.c inside the sys_vgui (s_inter.c) so that when the debug is on it outptus a trace for each call, it appears it only manages to do one level which is obviously the sys_vgui call itself. Why is it not able to trace further back?
void blargh(void) { #ifdef MACOSX fprintf(stderr,"unhandled exception\n"); #else int i; void *array[25]; int nSize = backtrace(array, 25); char **symbols = backtrace_symbols(array, nSize); for (i=0; i<nSize; i++) fprintf(stderr,"%d: %s\n",i,symbols[i]); free(symbols); #endif }
void sys_vgui(char *fmt, ...) {
<snip>
if (sys_debuglevel & DEBUG_MESSUP) { blargh(); fprintf(stderr, "%s", sys_guibuf + sys_guibufhead); }
<snip>
}
----------------------------------------------------------------------------
"A cellphone to me is just an opportunity to be irritated wherever you are." - Linus Torvalds