How to run gdb on Cyrus components ********************************** What is a service daemon? ^^^^^^^^^^^^^^^^^^^^^^^^^ A service daemon is any program based around master/service.c. This includes imapd, lmtpd (and some others), but does *not* include the command line tools. An easy way to debug something in a service daemon is to write a Cassandane test that tries to reproduce the bug. Cassandane has a "[gdb]" section in cassandane.ini which allows for starting service daemons in a debugger. The cassandane.ini.example in the cassandane repository contains examples and instructions. For programs that aren't service daemons, there are two options: If they are installed, run them with gdb. You might need to use "sudo" depending on permissions. If they haven't been installed (and you're in the source/build tree), you need to run gdb from "libtool" in order for everything to work. For example, if you wanted to debug cyr_virusscan: $ libtool --mode=execute gdb imap/cyr_virusscan Command line arguments for a tool you're debugging, must be given to gdb before you run. Use something like set args [ ... ]. More information on gdb.