diff options
Diffstat (limited to 'doc/devel/debug.dox')
-rw-r--r-- | doc/devel/debug.dox | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/doc/devel/debug.dox b/doc/devel/debug.dox new file mode 100644 index 0000000..f9f4696 --- /dev/null +++ b/doc/devel/debug.dox @@ -0,0 +1,33 @@ +/** + @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. + +*/ |