| |
| Traps (G_BREAKPOINT) and traces for the debuging |
| ================================================ |
| |
| Some code portions contain trap variables that can be set during |
| debugging time if G_ENABLE_DEBUG has been defined upon compilation |
| (use the --buildtype=debug option to configure for this, macros.txt |
| covers more details). |
| Such traps lead to immediate code halts to examine the current |
| program state and backtrace. |
| Currently, the following trap variables exist: |
| |
| static volatile gulong g_trap_free_size; |
| static volatile gulong g_trap_realloc_size; |
| static volatile gulong g_trap_malloc_size; |
| If set to a size > 0, g_free(), g_realloc() and g_malloc() |
| respectively, will be intercepted if the size matches the |
| size of the corresponding memory block to free/reallocate/allocate. |
| This will only work with g_mem_set_vtable (glib_mem_profiler_table) |
| upon startup though, because memory profiling is required to match |
| on the memory block sizes. |
| static volatile GObject *g_trap_object_ref; |
| If set to a valid object pointer, ref/unref will be intercepted |
| with G_BREAKPOINT (); |
| static volatile gpointer *g_trap_instance_signals; |
| static volatile gpointer *g_trace_instance_signals; |
| If set to a valid instance pointer, debugging messages |
| will be spewed about emissions of signals on this instance. |
| For g_trap_instance_signals matches, the emissions will |
| also be intercepted with G_BREAKPOINT (); |
| |
| Environment variables for debugging |
| =================================== |
| When G_ENABLE_DEBUG was defined upon compilation, the GObject library |
| supports an environment variable GOBJECT_DEBUG that can be set to a |
| combination of the flags passed in to g_type_init() (currently |
| "objects" and "signals") to trigger debugging messages about |
| object bookkeeping and signal emissions during runtime. |