/** @page debug Debugging This page enumerates various techniques useful for debugging ISC DHCP software. @section debugTips Debugging Tips & Tricks ISC DHCP code is somewhat convoluted. Due to extensive macros use, it is often difficult to even find whole function, much less to understand what they actually do. One way to find such a macro-defined function is to compile the code with debugging symbols (-g), load the binary into gdb and set a breakpoint for such a function. gdb will print out exact place in the code where the function is defined. Presumably one will find a macro at that specific location. For example to find where \ref lease_reference function is defined do: @verbatim gdb file dhcpd b lease_reference @endverbatim DEBUG_MEMORY_LEAKAGE may be defined in includes/site.h to enable some debugging code to help with debugging memory issues. This code keeps a running total of the outstanding memory that has been allocated and a list of the outstanding allocations. Both are updated whent he memory is freed. Status information is printed when do_packet() and do_packet6() complete processing. The outstanding value is expected to grow when new structures are used - for example when a new IPv6 lease is created. It is not expected to grow when a structure is reused for example when an IPv6 lease is renewed. DEBUG_RC_HISTORY and DEBUG_RC_HISTORY_EXHAUSTIVELY can also be defined to provide more verbose information about reference counts on objects. */