User:MarkFinkle/MaemoDebugging

From MozillaWiki
Jump to navigation Jump to search

I had no previous development experience on Linux before working on Fennec. However, we use the tools we have, so I started playing with gdb and gdbserver.

Debug Symbols To debug Fennec/XULRunner, you'll need a build with at least debug symbols. Creating full debug builds in scratchbox has failed many times. Using debug symbols is a little more lightweight.

Add the following to you mozconfig:

export MOZ_DEBUG_SYMBOLS=1
ac_add_options --enable-debugger-info-modules=yes

Packaging Now the Fennec/XULRunner binaries have debug symbols. However, the packaging phase will strip the symbols. You need to disable the strip.

In mozconfig:

ac_add_options --disable-install-strip

During a package:

make package PKG_SKIP_STRIP=1 

Now you can copy the binaries to the device. Because the debug binaries are larger than the release versions, you probably want to copy the application to /media/mmc2 since it has much more space available:

scp fennec-archive.tar.bz2 root@192.168.10.100:/media/mmc2

GDB In order to use gdb or gdbserver on the device, you'll need to install it:

apt-get install gdb

Since the debug binaries are on the device, you could use gdb on the device too:

gdb ./fennec

If you have a core dump file, you can load it too:

gdb ./fennec [path/to/coredump]

Running gdb on the device may be more pain than you can bear. Loading symbols from libxul.so can cause the device to reboot from OOM.

Instead of running locally, you can try running remotely. You can use gdbserver to run the application on the device and remote back to gdb which is running on your desktop, in scratchbox.

On the device:

gdbserver host:5555 ./fennec

On the desktop:

> gdb
(gdb) target remote 192.168.10.100:5555
(gdb) symbol-file /path/to/libxpcom.so
(gdb) symbol-file /path/to/libmozjs.so
(gdb) symbol-file /path/to/libxul.so
(gdb) continue