Difference between revisions of "GDB"

From ArmadeusWiki
Jump to: navigation, search
(Debugging a program running on your APF, from your Host, through Ethernet)
(Debugging a program running on your APF, from your Host, through Ethernet)
Line 33: Line 33:
  
 
{{Note|Only ''continue / c'' can be used to start the program, because it is already running when you launch GDB on your host.}}
 
{{Note|Only ''continue / c'' can be used to start the program, because it is already running when you launch GDB on your host.}}
 +
 +
<pre class="host">
 +
(gdb) break main
 +
(gdb) continue
 +
...
 +
(gdb) next
 +
...
 +
</pre>
  
 
{{Note|Core dump analysis doesn't seem to work in this use case !!}}
 
{{Note|Core dump analysis doesn't seem to work in this use case !!}}

Revision as of 17:18, 27 October 2009

On this page you will find all you need to debug your userspace applications running on your Armadeus board.

Note Note: First of all, be sure to have installed the Toolchain on your Host.


Compile your program with debug symbols

  • Use -g option of gcc:
 $ make shell_env
 $ . armadeus_env.sh
 $ export PATH=$PATH:$ARMADEUS_TOOLCHAIN_PATH

 $ arm-linux-gcc -g -o hello hello.c
  • If you have a Makefile for your project, you probably have a CFLAGS variable, so add it -g. Ex:
CFLAGS=-W -Wall -g

Debugging a program running on your APF, from your Host, through Ethernet

  • On the target launch your program like that:
 # gdbserver 192.168.0.2:2345 program [args]

192.168.0.2 is the IP address of your Host and 2345 the port number to use (examples).

  • On your Host launch:
 []$ arm-linux-gdb program
 (gdb) set solib-absolute-prefix ./buildroot/build_armv4t/staging_dir/
 (gdb) target remote 192.168.0.10:2345

192.168.0.10 is the address of your target

Note Note: Only continue / c can be used to start the program, because it is already running when you launch GDB on your host.


 (gdb) break main
 (gdb) continue
...
 (gdb) next
...
Note Note: Core dump analysis doesn't seem to work in this use case !!


Debugging directly on your APF (may require more memory)

  • You have to build gdb for the target:
 $ make menuconfig
Toolchain  --->
        *** Gdb Options ***
    [*] Build gdb debugger for the Target
 $ make

Then you can either reflash your rootfs, or copy $ARMADEUS_ROOTFS_DIR/bin/gdb to your board, to a SD or to a NFS export.

  • After installation, launch gdb on your APF:
 # gdb your_prog

If you need argument passing:

 # gdb --args your_prog your_args

To debug a Core dump:

 # gdb your_prog -c your_core_file

Links

Other languages:

English Flag.svg English  •  French Flag.svg Français