Provide a hook to allow refcounting to be traced
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Tue, 26 Jul 2011 14:52:56 +0000 (15:52 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Mon, 13 Feb 2012 17:54:46 +0000 (17:54 +0000)
commit566a8416648be2a5df407daa11688c3b5918d452
tree4e0cdb097174c3cbb99b959a1064f1db4ae8f2d7
parentd571e70a534e8d636fb6572f498f7e0b42b0972c
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 <simon.mcvittie@collabora.co.uk>
Reviewed-by: Lennart Poettering <lennart@poettering.net>
dbus/dbus-internals.c
dbus/dbus-internals.h