Setting up jprof
From MDC
Jprof is a profiling tool for Linux. To use it, one needs to build mozilla with special build options.
Contents |
[edit] Checking it out
Since jprof isn't part of the default build, you'll need to explicitly check out its source:
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/tools/jprof
[edit] Setting up mozconfig
In order to enable jprof, you'll need to add
ac_add_options --enable-jprof
to your mozconfig file. Note that if you're going to be profiling stuff, it's good to have an optimized (--enable-optimize --disable-debug) build. Also, jprof needs symbols to operate, so you must not have --enable-strip in your mozconfig.
For more information about configuring your build, see Configuring Build Options.
[edit] Building
After you've checked out the source and set up a mozconfig file, you should be able to run
make -f client.mk build
and have a build ready to profile with. See the jprof README for information on how to use jprof.
[edit] Tackling build errors
[edit] Missing bfd.h
When compiling bfd.cpp you may get the following error:
error: bfd.h: No such file or directory
You will need to download the package which has the bfd.h header file in it. This is usually in the binutils development package on most platforms.
[edit] Linking error with libmalloc.o
When linking all the files together you may get this error:
libmalloc.o: In function `DumpAddressMap()':libmalloc.cpp:(.text+0x252): undefined reference to `_r_debug' collect2: ld returned 1 exit status
In order to fix this, the following line must be added to Makefile.in in mozilla/tools/jprof/stub/:
EXTRA_DSO_LDOPTS += /lib/ld-linux.so.2
[edit] Credits
Much of this information was taken from the jprof README and a blog post by Gijs Kruitbosch (Hannibal).