|  |  | 
|  | Traps (G_BREAKPOINT) and traces for the debugging | 
|  | ================================================= | 
|  |  | 
|  | 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. |