|
gdbリモートデバック †CAT開発CDROM Ver2.03以降で、CAT709 CAT760 共に gdb (GNUデバッガ) によるリモートデバックに対応しました。具体的には
この組み合わせによって、CAT709 CAT760 のアプリケーション開発に gdb を利用することができるようになりました。また後述する SWEET を使うとより簡単にデバックが行えます。それでは実際に gdb によるリモートデバックを動かしてみましょう。 用意するもの †
gdbリモートデバック実例 †ソースコード †次のような簡単なソースコードを用意します。main.c という名前で保存します。 #include <stdio.h> int main(){ int a,b,i; a=5; b=6; printf("hello \n"); for(i=0;i<10;i++){ printf("i=%d, a=%d, b=%d\n",i,a++,b++); } printf("end\n"); } クロスコンパイル †開発機で $ sh4-linux-gcc -O2 -g main.c NFSマウント †CAT709,CAT760 で # mount 開発機のIP:/home/略 /sweet -o tcp,ro # cd /sweet main.cおよびa.outがあるパスを /sweet にマウントしたとします。 開発機とターゲット機 双方とも main.c と a.out ファイルがある位置をカレントディレクトリにします。 gdbserver起動 †CAT709,CAT760 で # gdbserver 開発機のIP:1234 a.out Process a.out created; pid = 947 Listening on port 1234 開発機のIPアドレスとポート番号(この例では1234)を指定して待ち受けに入ります リモートgdb起動 †開発機で $ sh4-linux-gdb ./a.out (gdb) target remote CATのIPアドレス:1234 あとは通常の gdb の操作と同じです gdb操作 †リストを見る (gdb) l 1 #include <stdio.h> 2 3 int main(){ 4 int a,b,i; 5 a=5; 6 b=6; 7 8 printf("hello \n"); 9 for(i=0;i<10;i++){ 10 printf("i=%d, a=%d, b=%d\n",i,a++,b++); 10行目にブレイクポイントを張る (gdb) b 10 Breakpoint 1 at 0x4005e2: file main.c, line 10. 実行 (gdb) c Continuing. Breakpoint 1, main () at main.c:10 10 printf("i=%d, a=%d, b=%d\n",i,a++,b++); 変数を見る (gdb) print i $1 = 0 再開 (gdb) c Continuing. Breakpoint 1, main () at main.c:10 10 printf("i=%d, a=%d, b=%d\n",i,a++,b++); … このとき、CAT709 CAT760 の画面には printf()文 での実行結果が表示されます。 gdbの使い方は本ページの範囲を超えます。ネット上や書籍にgdbの詳しい使い方がたくさん載っていますので参考にしてください。 SWEET †gdbは難しい・・覚える時間がない。という方には SWEET をお勧めします。SWEET は 高機能テキストエディタと、gdb等の操作を変わりに行ってくれる Windowsアプリケーションです。 リンク † |