mirror of https://gitee.com/openkylin/glib2.0.git
38 lines
1.8 KiB
Plaintext
38 lines
1.8 KiB
Plaintext
|
|
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. |