# How to run gdb on Cyrus components

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.