警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : GDB Serverを使う(Armadillo)

対象製品: Armadillo(HT1070)

gdbserver を使うことによって、Armadilloでイーサネット経由のリモートデバッグをすることができます。

1. gdbと、gdbserver のダウンロード

Armadilloでクロスデバッグを行うには、ARMクロスデバッガと Armadillo上で動く gdbserverが必要です。

ARMクロスデバッガは以下の2つから使用しているOSにあわせてダウンロードしてください。

(参照:[Cygwin上でクロス開発する](/howto/cygwin-a))

Armadillo上で動く gdbserverは、共通です。

以降、Linux環境での作業をベースに説明になりますので、Cygwin環境の方は適時読み替えてください。

2. ダウンロードしたファイルを解凍

arm-linux-gdb.gzと gdbserver.gz は、gzipで圧縮してあります。ホストコンピュータ上で gzip を使い、解凍します。


[PC ~]$ ls
arm-linux-gdb.gz gdbserver.gz
[PC ~]$ gzip -d arm-linux-gdb.gz
[PC ~]$ gzip -d gdbserver.gz
[PC ~]$ ls
arm-linux-gdb gdbserver

3. 転送

伸張した gdbserverを Armadillo に転送します。/usr/binの下に入れておくと便利です。ftp での転送方法は「ftpでファイルを送受信する」を、ルートイメージを変更する場合は「ユーザランドをカスタマイズする」をご覧ください。転送後、ファイルパーミッションを確認してください。

4. 実行

gdbserverの簡単な使い方を説明します。詳しくは gdbのマニュアル等を参照してください。

ここからは

  • 「arm$」を Armadillo上でのプロンプト
  • 「host$」をホストコンピュータ上でのプロンプト
  • 「192.168.1.1」をホストコンピュータの ip
  • 「192.168.1.2」をArmadilloの ip
  • 「9876」をデバッグに使用するポート番号

とします。適時置き換えてください。

まず、Armadillo上で gdbserverを起動します。


[armadillo ~]$ gdbserver 192.168.1.1:9876 /usr/bin/gdbserver
Process /usr/bin/gdbserver created; pid = 267

続いて、hostコンピュータから Armadillo上の gdbserverに接続します。


[PC ~]$ arm-linux-gdb gdbserver
GNU gdb 5.2.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"...
(gdb) target remote 192.168.1.2:9876
0x40002740 in ?? ()

接続に成功している事が gdbserverでも確認できます。


Remote debugging from host 192.168.10.1

ホストコンピュータに戻り、ブレイクポイントをつけて継続実行させます。


(gdb) b main
Breakpoint 1 at 0x20019fc: file server.c, line 67.
(gdb) c
Continuing.

Breakpoint 1, main (argc=1042, argv=0x112) at server.c:67
67      server.c: No such file or directory.
        in server.c
(gdb)
カテゴリ: