From 566a8416648be2a5df407daa11688c3b5918d452 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Tue, 26 Jul 2011 15:52:56 +0100 Subject: Provide a hook to allow refcounting to be traced This is designed to be used from a wrapper function, partly to supply the same arguments every time for a particular class of object, and partly to provide a more specific gdb breakpoint. It has several purposes: * when under gdb, provide a function which can be used in breakpoints * when not under valgrind and DBUS_MESSAGE_TRACE=1 is set, emit a _dbus_verbose when a message's refcount changes * when under valgrind and DBUS_MESSAGE_TRACE=1 is set, emit a VALGRIND_PRINTF_BACKTRACE when a message's refcount changes, which lets you see the complete history of each message to track down reference leaks Compile-time support is currently conditional on DBUS_ENABLE_VERBOSE_MODE, but could be separated out if desired. Bug: https://bugs.freedesktop.org/show_bug.cgi?id=37286 Signed-off-by: Simon McVittie Reviewed-by: Lennart Poettering --- dbus/dbus-internals.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'dbus/dbus-internals.h') diff --git a/dbus/dbus-internals.h b/dbus/dbus-internals.h index 2493d414..162a2224 100644 --- a/dbus/dbus-internals.h +++ b/dbus/dbus-internals.h @@ -118,6 +118,14 @@ static void _dbus_verbose(const char * x,...) {;} # define _dbus_is_verbose() FALSE #endif /* !DBUS_ENABLE_VERBOSE_MODE */ +void _dbus_trace_ref (const char *obj_name, + void *obj, + int old_refcount, + int new_refcount, + const char *why, + const char *env_var, + int *enabled); + const char* _dbus_strerror (int error_number); #ifdef DBUS_DISABLE_ASSERT -- cgit v1.2.1