Most of embedded devices have poor resources, such as memory, disk, and lack of some debug libraries.
So we use remote gdb, rather than directly gdb on device
1. download gdb source code:
http://ftp.gnu.org/gnu/gdb/2. untar source code:
'tar xvf gdb-7.3.tar.bz2'
3. build
1) build host gdb (gdb client)
a) 'cd gdb-7.3/'
b) './configure --prefix=/home/duan/arm-linux-gdb --target=arm-linux'
c) 'make'
=> arm-linux-gdb
d) 'make install'
2) build target gdb (gdb server)
a) 'cd gdb/gdbserver/'
b) './configure --prefix=/home/duan/arm-linux-gdb --target=arm-linux --host=arm-linux CC=/home/duan/arm-davinci-linux-gcc'
Note: set your own compile chain as CC value
c) 'make'
=> arm-linux-gdbserver
d) 'make install'
4. debug
1) environment
test program: hello
host ip: 192.168.1.100
target ip: 192.168.1.200
2) mount nfs dirctory to target board
'mount -t nfs -o nolock 192.168.1.100:/home/duan/nfs /mnt/nfs'
3) copy 'hello' executable program and arm-linux-gdbserver to nfs directory
4) run program on target board
'cd /mnt/nfs'
'./arm-linux-gdbserver 192.168.1.100:1234 hello'
5) gdb on host
/home/duanbb/arm-linux-gdb/bin/arm-linux-gdb hello
(gdb) target remote 192.168.1.200:1234
(gdb) b main
(gdb) c
Continuing.
Note: because program run on target, so can not use 'r' to run program, use 'c' to continue program
other commands are same as local gdb, such as 'l', 'p' and so on