Documentation

Previous Topic

Next Topic

gdb Remote Debugging

This section shows an example of how to remote debug using gdb, the GNU Project Debugger, on a different system architecture. In this example:

  • Host=x86 Linux
  • Target =ARM linux

The gdbserver must be compiled and run on the target system. The gdb must be specially compiled to be aware of the target architecture.

See: https://sourceware.org/ml/gdb/2005-02/msg00074.html

To build gdb with auto-detect host (x86) and ARM-Linux target:


$ cd gdb-6.3

$ ./configure --target=arm-linux

$ make

$ file gdb/gdb

gdb/gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for

GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped

$ cd gdb/gdbserver

$ export CC=/usr/local/bin/arm-linux-gcc

$ ./configure --host=arm-linux

$ make

$ file gdbserver

gdbserver: ELF 32-bit MSB executable, ARM, version 1 (ARM), for GNU/Linux

2.4.3, dynamically linked (uses shared libs), not stripped

Copy gdbserver to the target and run your program on the target using TCP/IP. This alternate syntax can be used for the COM port:


# gdbserver host:2345 ./ctsrvr

On the host, start your special gdb version and issue the following commands:


#local copy of binary to debug

(gdb) file ./ctsrvr

#path to local "root" for resolving system libraries with absolute paths

(gdb) set sysroot /usr/local/opt/crosstool/arm-linux/gcc-3.3.4-glibc-2.3.2/arm-linux

#path to any local copies of libraries using relative paths

(gdb) set solib-search-path /usr/local/opt/crosstool/arm-linux/gcc-3.3.4-glibc-2.3.2/arm-linux/lib

#attach to remote process host:port

(gdb) target remote ts7200:2345

TOCIndex