Armadillo-J上で gdbserver を動作させ、開発用PC上の gdb と通信させることで、リモートデバッグが可能になります。
1. ホスト用GDBの作成
GDBプロジェクトから、最新のGDBソースコードを取得します。以下の手順で、取得したソースコードを展開してコンパイルを行います。
[PC ~]$ tar zxvf gdb-x.x.tar.gz
[PC ~]$ cd gdb-x.x
[PC gdb-x.x]$ ./configure --target=arm-elf --prefix=/usr/local/gdb/
[PC gdb-x.x]$ make
[PC gdb-x.x]$ sudo make install
(※最後のコマンドに失敗する場合は、rootユーザで最後のコマンドを実行して下さい)
以上で、/usr/local/gdb/bin/ 配下に arm-elf-gdb が作成されます。
2. gdbserverの作成
(※ uClinux-distのバージョンが 2004/06/10 以前のものでは、gdbserverが正常に動作しません。最新版をダウンロードして下さい)
開発用PCで、uClinux-distディレクトリに移動後、make menuconfig とコマンド入力してコンフィギュレーション画面を起動します。
画面の起動後
[ ] Customize Vendor/User Settings (NEW)
をチェックして保存・終了します。
次に起動した画面で、
Miscellaneous Applications --->
[ ] gdbserver
を選択して保存・終了します。
make コマンドを実行すると、uClinux-dist/romfs/bin/ 配下に gdbserver が作成されます。
3. リモートデバッグの実行
ここでは、
・Armadillo-JのIPアドレス "192.168.1.100"
・開発用PCのIPアドレス "192.168.1.10"
・デバッグ時のポート番号 "9876"
として説明します。
まず、デバッグ対象のプログラムを作成します。「サンプルプログラムの作成」を参照してプログラムを作成して下さい。(この時デバッグ用シンボルを作成するため、Makefile の CONFIG_USER_DEBUG 行を有効にしてから、コンパイルして下さい。)
コンパイルが終了すると、sample と sample.gdb という二つのファイルが作成されますが、sample はArmadillo-Jで、sample.gdb は開発用PC上で使用します。 gdbserver と デバッグ対象プログラムを Armadillo-Jにファイル転送し、実行権を与えてからgdbserverを実行します。
[armadillo /home/ftp/pub]# chmod +x gdbserver sample
[armadillo /home/ftp/pub]# ./gdbserver 192.168.1.10:9876 ./sample
次に、開発用PC上で arm-elf-gdb を起動し、gdbserverと接続します
[PC ~]$ /usr/local/gdb/bin/arm-elf-gdb sample.gdb
GNU gdb x.x
<中略>
(gdb) target remote 192.168.1.100:9876
Remote debugging using 192.1681.100:9876
0x005c0050 in _start ()
ブレイクポイントを設定して、継続実行します。
(gdb) b main
Breakpoint 1 at 0x5c0078: file sample.c, line 4.
(gdb) c
Continuing.
Breakpoint 1, main (argc=0, argv=0xa8) at sample.c:4
4 printf("Hello world!\n");
(gdb)