Icedove is the Thunderbird email client rebranded by Debian.

Tips

Display Email User Agent

Shortcuts

Take a look at https://support.mozillamessaging.com/en-US/kb/keyboard-shortcuts

Debugging

Sometimes you need some debug info for tracking down problems, for example to give the maintainer more useful info if you have some trouble with Icedove. To get a digestible output with gdb while debugging the application (icedove and used librarys) must have so named "debugging symbols". For the normal use this symbols inside the application are not nessesary. To track file actions there is the posibility to use strace to monitor this.

Preparation

There some depencies to get a propper debug output. May be you need to install some additional packages. Once the applications with the debbuging symbols and the tools to get the output while debugging. Boths are nessesary. You will need to install the following packages.

additional packages

gdb icedove-dbg strace

Starting Debugging

If these packages are installed you have to start Icedove from a terminal, this is quite simple, you have to give an argument '-g' to the starting wrapper script of icedove.

user@pc:~ $ icedove -g 2>&1 | tee /tmp/gdb.log.txt

This starts the gdb with icedove as program to debug and logs all the output to /tmp/gdb.log.txt. The file can be send to a bug report as attachment. This is mostly needed if your Icedove is crashing at some action. Please check the output of the gdb! If you see somthing like no debugging symbols found check the packages you have installed. With no debugging symbols it's worthless to go further! The next step is to start the Icedove inside the gdb with the "run" command.

(gdb) run

The start of Icedove is taking a little time, after a few seconds you will see (hopefully) the normal gui screen of Icedove. In the terminal there must be some info to see, in normal case the starting and terminating of Threads, this should looks like this.

user@pc:~ $ icedove -g 2>&1 | tee /tmp/gdb.log.txt
/usr/lib/icedove/run-mozilla.sh -g /usr/lib/icedove/icedove-bin
MOZILLA_FIVE_HOME=/usr/lib/icedove
  LD_LIBRARY_PATH=/usr/lib/icedove:/usr/lib/icedove/plugins:/usr/lib/icedove
DISPLAY=:0
DYLD_LIBRARY_PATH=/usr/lib/icedove:/usr/lib/icedove
     LIBRARY_PATH=
       SHLIB_PATH=/usr/lib/icedove:/usr/lib/icedove
          LIBPATH=/usr/lib/icedove:/usr/lib/icedove
       ADDON_PATH=
      MOZ_PROGRAM=/usr/lib/icedove/icedove-bin
      MOZ_TOOLKIT=
        moz_debug=1
     moz_debugger=
moz_debugger_args=
/usr/bin/gdb  --args /usr/lib/icedove/icedove-bin
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/lib/icedove/icedove-bin...Reading symbols from /usr/lib/debug/usr/lib/icedove/icedove-bin...done.
done.
(gdb) run
Starting program: /usr/lib/icedove/icedove-bin 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe5993700 (LWP 9761)]
[New Thread 0x7fffe4ad0700 (LWP 9762)]
[New Thread 0x7fffe42cf700 (LWP 9763)]
[New Thread 0x7fffe36ff700 (LWP 9764)]
[New Thread 0x7fffe23ff700 (LWP 9765)]
[New Thread 0x7fffe1bfe700 (LWP 9766)]
[New Thread 0x7fffe03f6700 (LWP 9767)]
[New Thread 0x7fffdf7ff700 (LWP 9768)]
[New Thread 0x7fffdeffe700 (LWP 9769)]
[New Thread 0x7fffddfff700 (LWP 9770)]
[New Thread 0x7fffdc0ff700 (LWP 9771)]
[Thread 0x7fffe03f6700 (LWP 9767) exited]
[Thread 0x7fffdeffe700 (LWP 9769) exited]

If now happend a crash and Icedove stopped working and quits it's possible to get a backtrace of this. For this run the command bt in the terminal there the gdb runs. Remind that icedove is programmed as a multithreaded program, because of this we want to see all thees threads. For more info about gbd around this take a look on How to get a backtrace.

(gdb) thread apply all bt

This gives out a collection of the last status from the stack. This info is needed if you reporting errors with a crashing Icedove.

Note!

In some special cases a crash of icedove can produce a crash of your X-Server. If this happen you have to start your icedove from a screen session. Without this you can't see the output of the backtrace because the terminal is also cleand up while the X-Server is crashed. After you relogin to your X-Sessions restart your terminal and reateach the screen session with screen -r.

Debugging of Filesystem Activity

It is also posible to see what Icedove is trying do on the filesystem. For this you can use the tool strace. For this Icedove must also started from a terminal. strace logs every system call Icedove makes, and this is a lot! So it is usefull to log directly to a file. Note that the file will growing very fast! Best practise is to write the file to the /tmp folder. So the file will be dropped if you turn off your pc.

user@pc:~ $ strace -e file -f -s2048 -o /tmp/icedove_dgb.txt icedove

Known Problems

There are some problems that needs a lot of time to work on or some rethinking.