Editing Using Valgrind and gdb in Scratchbox

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
#REDIRECT [[Documentation/Maemo_5_Developer_Guide/Kernel_and_Debugging_Guide/Maemo_Debugging_Guide]]
+
{{delete}}
 +
{{Midgard article}}
 +
 
 +
= 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]]

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)