Using Valgrind and gdb in Scratchbox

 
(One intermediate revision not shown)
Line 1: Line 1:
-
{{Midgard article}}
+
#REDIRECT [[Documentation/Maemo_5_Developer_Guide/Kernel_and_Debugging_Guide/Maemo_Debugging_Guide]]
-
 
+
-
= Hints for using valgrind tools in Maemo Scratchbox =
+
-
 
+
-
== Running Valgrind and gdb ==
+
-
 
+
-
The standard way to use Valgrind and gdb is the af-sb-init.sh script. af-sb-init.sh supports parameters for running the software we're interested in with tools:
+
-
 
+
-
af-sb-init.sh start --valgrind=my_app
+
-
af-sb-init.sh start --gdb=my_app
+
-
 
+
-
Valgrind will store the results in /tmp/valgrind-my_app.log*. gdb will show its prompt on loading my_app.
+
-
 
+
-
== Debugging applets ==
+
-
 
+
-
To debug a panel applet:
+
-
 
+
-
af-sb-init.sh start --valgrind=maemo_af_desktop
+
-
 
+
-
You'll get the results in /tmp/valgrind-maemo_af_desktop.log*
+
-
 
+
-
== Other Valgrind front ends ==
+
-
 
+
-
To use other Valgrind front-ends, set the following environment variables:
+
-
* VALGRINDCMD: the command you want to run inside valgrind.
+
-
* VALGRIND: the valgrind command and parameters, including the front-end to use.
+
-
 
+
-
For example, to run massif on maemo_af_desktop:
+
-
<pre>
+
-
export VALGRINDCMD=maemo_af_desktop
+
-
export VALGRIND="valgrind --tool=massif --num-callers=50
+
-
        --trace-children=yes --depth=5 --format=html -log-file=/tmp/massif
+
-
        --alloc-fn=g_malloc --alloc-fn=g_malloc0 --alloc-fn=g_realloc
+
-
        --alloc-fn=g_slice_alloc --alloc-fn=g_try_malloc
+
-
        --alloc-fn=g_slice_alloc0"
+
-
af-sb-init.sh start
+
-
... do your stuff ...
+
-
af-sb-init.sh stop
+
-
</pre>
+
-
 
+
-
Your massif reports will be generated in /tmp (logs) and $PWD (html and postscripts).
+
-
 
+
-
== Debug packages ==
+
-
 
+
-
When gdb uses "realpath" on libraries in Scratchbox, the path returned starts with "/targets//", which causes some issues. You can see the effect of this if you run Valgrind or gdb through strace. This causes problems when using debug packages.
+
-
 
+
-
To use debug packages with Valgrind and gdb in Scratchbox, run this script:
+
-
<pre>
+
-
#!/bin/sh
+
-
# symlinks for debug symfiles in sbox
+
-
mkdir -p /usr/lib/debug/targets
+
-
cd /usr/lib/debug/targets
+
-
ln -sf /usr/lib/debug $(sh -c '. /targets/links/scratchbox.config;echo $SBOX_TARGET_NAME')
+
-
</pre>
+
-
 
+
-
== GSlice ==
+
-
 
+
-
When using Valgrind, set the environment variable G_SLICE:
+
-
 
+
-
export G_SLICE="always-malloc"
+
-
 
+
-
Otherwise Valgrind will report bogus leaks (see [http://bugzilla.gnome.org/show_bug.cgi?id=444444 this bug] in Gnome Bugzilla for more information on Glib Gslice and Valgrind).
+
-
 
+
-
== Analysing ARM core dumps ==
+
-
The cross-gdb used by default when it is installed in Scratchbox cannot debug ARM (EABI) core dumps. You need a natively compiled gdb to do this. To avoid using the cross-compiled gdb if it is installed, run your command with this script:
+
-
<pre>
+
-
#!/bin/sh
+
-
# use native gdb in Scratchbox
+
-
SBOX_REDIRECT_IGNORE=/usr/bin/gdb /usr/bin/gdb $*
+
-
</pre>
+
-
 
+
-
To check which gdb you are running, run "gdb -v". If you see "--host=i686-pc-linux-gnu" when you are on ARM, then you are running cross-gdb.
+
-
 
+
-
 
+
-
[[Category:Development]]
+
-
[[Category:Wiki page of the day]]
+
-
 
+
-
[[Category:Scratchbox]]
+

Latest revision as of 12:31, 26 April 2010

  1. REDIRECT Documentation/Maemo_5_Developer_Guide/Kernel_and_Debugging_Guide/Maemo_Debugging_Guide