2012年2月26日日曜日

Armadillo-440でgdbserverを使う

Armadillo-440でgdbserverを使うときのメモです。
440にmicroSDで
linux-a400-1.08.bin.gz
debian-lenny-armel-1.tgz
debian-lenny-armel-2.tgz
debian-lenny-armel-3.tgz
debian-lenny-armel-4.tgz
debian-lenny-armel-5.tgz
debian-lenny-armel-a4x0.tgz
を使って構築後にgdbserverを起動させます。

1. gdbserverのインストール(ボード側)
# apt-get update
# apt-get upgrade
の実行後
# apt-get install gdb でインストールします。

2. デバッグ用プログラムの準備
開発用PCでdebug.cを用意します。
[debug.c]


#include
#include

int main(){
char *ptr = NULL;
strcpy(ptr, "hello debug\n");
return 0;
}



ターゲット側:デバッグ情報のない実行ファイル
開発側:デバッグ情報のある実行ファイル

開発側でまずターゲット用の実行ファイル作成(デバッグ -gなし)をして転送しておきます。
開発側
$ arm-linux-gnueabi-gcc -o debug debug.c
$ lftp ターゲットIP -u guest
~> cd /tmp                 
cd 成功、cwd=/tmp                
lftp guest@ターゲットIP:/tmp> put debug
7446 bytes transferred          

今度はデバッグ情報のある実行ファイルを用意します。
開発側
$ gcc -Wall -g -o debug debug.c
またarm-linux-gdb を実行できる場所においておきます

3. デバッグ開始
[ターゲット側]
debian:/tmp# gdbserver 開発側IP:1234 hello
Process hello created; pid = 4800
Listening on port 1234

[開発側]
$ arm-linux-gdb debug
(gdb) target remote ターゲット側IP:1234

このときターゲット側で
Remote debugging from host 開発側IP がでている

ただし今回は
(gdb) target remote ターゲットのIP:1234
Remote debugging using ターゲットのIP:1234
[New Thread 4829]
Cannot access memory at address 0x0
0x400007c0 in ?? ()
と出てしまいgdbの実行ができない。

継続的に検証です。

0 件のコメント:

コメントを投稿