From ee9696cbb7a39e0f13739ae86cd925b0f675a43c Mon Sep 17 00:00:00 2001
From: sandman <sandman>
Date: Sun, 17 Nov 2002 22:32:35 +0000
Subject: ARM Cross-Debgging tools and a short HOWTO

---
diff --git a/development/cross-debug/README.cross-debug b/development/cross-debug/README.cross-debug
new file mode 100644
index 0000000..c44b298
--- a/dev/null
+++ b/development/cross-debug/README.cross-debug
@@ -0,0 +1,82 @@
+
+This is a quick'n'dirty HowTo for cross-debugging on your iPAQ/Zaurus:
+
+Requirements:
+-------------
+
+1) You need the same binary of the program being debugged on the handheld
+   and on the desktop machine.
+   
+2) The binary for the handheld can be stripped (!!)
+
+3) The binary for the desktop must have been compiled with -g
+
+3) The same applies to shared libraries (but this is only needed if you want 
+   to step into libraries or if you want the backtrace to show the right
+   function names for libraries)
+      
+
+Setup:
+------
+
+1) install the gdbserver.ipk on the handheld.
+
+2) put the arm-linux-gdb binary somewhere in your $PATH (I would suggest
+   /opt/Embedix/tools/arm-linux/bin)
+   
+3) copy the sample.arm-gdbinit to your $HOME directory and rename it to
+   .arm-gdbinit
+   
+4) edit ~/.arm-gdbinit:
+   "solib-search-path" is the path, where gdb searches for shared libraries
+   "rtX" are some aliases to speed up debugging -- you can rename them, or
+   remove them (see below for the "target ... " syntax)
+   
+
+Sample session: debugging the launcher
+--------------------------------------
+
+1) Login on the handheld, kill Opie and execute:
+   
+   # gdbserver foo:2345 /opt/QtPalmtop/bin/qpe
+   
+   This starts the program qpe in debug mode, and the gdbserver stub now
+   listens on port 2345 for an incoming connection from the real gdb.
+   (foo should be name of the desktop machine, but it is ignored)
+   
+2) On the desktop, change to the $OPIEDIR containing the arm binaries
+
+   # cd $OPIEDIR
+   # cd core/launcher
+   
+   # arm-linux-gdb ../../bin/qpe 
+   or   
+   # ddd --debugger arm-linux-gdb ../../bin/qpe
+   
+3) You should get an "(arm-gdb)" prompt. Now do
+
+   (arm-gdb) target remote zaurus:2345
+   
+   You have to change zaurus to the hostname or ip-address of your handheld.
+   This should produce:
+   
+   Remote debugging using zaurus:2345
+   0x40002a80 in ?? ()
+   
+   (arm-gdb) break main
+   (arm-gdb) cont
+   
+   And gdb should stop in 'main'. If gdb complains about unknown symbol 
+   'main', you forgot to compile the application in debug mode.
+   
+   This is where the rtFOO macros come in handy: just type rtX and you are 
+   connected to machine BAR.
+   
+4) You can debug/step your application, as you would with a native gdb from
+   here on.
+   
+   Please note that single stepping in a cross-debugger can be VERY SLOW 
+   sometimes !!  
+
+
+Robert 'sandman' Griebl, 17.11.2002
diff --git a/development/cross-debug/arm-linux-gdb b/development/cross-debug/arm-linux-gdb
new file mode 100755
index 0000000..17ff0e1
--- a/dev/null
+++ b/development/cross-debug/arm-linux-gdb
Binary files differ
diff --git a/development/cross-debug/gdbserver_0.0-20020729_arm.ipk b/development/cross-debug/gdbserver_0.0-20020729_arm.ipk
new file mode 100644
index 0000000..60c5e43
--- a/dev/null
+++ b/development/cross-debug/gdbserver_0.0-20020729_arm.ipk
Binary files differ
diff --git a/development/cross-debug/sample.arm-gdbinit b/development/cross-debug/sample.arm-gdbinit
new file mode 100644
index 0000000..9d09ace
--- a/dev/null
+++ b/development/cross-debug/sample.arm-gdbinit
@@ -0,0 +1,19 @@
+set solib-absolute-prefix /dev/null
+set solib-search-path /home/sandman/work/opie/lib:/opt/Embedix/tools/arm-linux/lib
+
+define rtz
+target remote zaurus:2345
+break main
+end
+
+define rt36
+target remote ipaq2:2345
+break main
+end
+
+
+define rt38
+target remote ipaq:2345
+break main
+end
+
--
cgit v0.9.0.2