gdbserver を使うことで、SUZAKUのユーザアプリケーションをリモートデバッグすることができます。
以下に、SUZAKU-S上で gdbserverを利用するための手順と、簡単な使い方を説明します。必要なパッチは、1番下の「参照」から取得してください。
動作環境
- SUZAKU-Sシリーズ
- ディストリビューション: uClinux-dist-20051110-suzaku2 以降
gdbserver のビルド
パッチファイルは、このページの一番下の「参照」から取得できます。 1. gdbserver パッチをあてる (uClinux-dist-20051110-suzaku2のみ)
[PC ~]$ tar xzf uClinux-dist-20051110-suzaku2.tar.gz
[PC ~]$ cd uClinux-dist-20051110-suzaku2
[PC ~/uClinux-dist-20051110-suzaku2]$ tar xzf threaded-gdbserver-update.tar.gz
2. 割り込みベクタの変更パッチをあてる (uClinux-dist-20051110-suzaku2のみ)
[PC ~/uClinux-dist-20051110-suzaku2]$ patch -p1 < modify-intv.S-for_SS.patch
3. gdbserver の選択
make menuconfig 等で、gdbserver を選択します。
Kernel/Library/Defaults Selection --->
[*] Customize Vendor/User Settings
Miscellaneous Applications --->
[ ] gdbreplay
[*] gdbserver
[ ] gdbreplay (old)
[ ] gdbserver (old)
4. ビルド
[PC ~/uClinux-dist-20051110-suzaku2]$ make dep all
リモートデバッグ
gdbserver を使った簡単なデバッグ方法を説明します。 詳しくは、gdb のマニュアル等を参照して下さい。 デバッグには、GUIツール、コマンドラインによる方法の2通りが選択できます。 以降の説明例では、次に示す環境および表現を用います。適宜、読みかえて下さい。- ホスト側
- プロンプト: [PC ]$
- IPアドレス: 192.168.1.1
- ターゲット側
- プロンプト: [SUZAKU ]#
- IPアドレス: 192.168.1.100
- その他
- アプリケーション名: hello
- 使用するポート番号: 1234
- gdbのコマンドプロンプト: (gdb)
CFLAGS += -O0
GUIツールによるデバッグ
- SUZAKU上で、gdbserverを起動
[SUZAKU ]# gdbserver 192.168.1.1:1234 /bin/hello Process /bin/hello created; pid = 53 Listening on port 1234
- ホストPCで gdb を起動
[PC ]$ mb-uclinux-gdb hello.gdb
- 接続設定
gdbが起動したら、GDB起動ウインドウが現れます。
メインメニューから[File]->[Target Settings]を選択し、接続設定を行います。
- Connection
Target: Remote/TCP : XMD Hostname: 192.168.1.100 Port: 1234 - 「Set breakpoint at 'main'」をチェック
- Fewer Options
- 「Attach to Target」をチェック
- 「Continue from Last Stop」をチェック
- Connection
- 実行 Run アイコン(左端)を押します。または、メインメニューの[Run]->[Run]を選択します。
コマンドラインによるデバッグ
- SUZAKU上で、gdbserverを起動 GUIツールによるデバッグと同じです。
- ホストPCで gdb を起動
[PC ]$ mb-uclinux-gdb -nw hello.gdb
- gdbserver と接続
(gdb) target remoto 192.168.1.100:1234
- ブレークポイントの設定
main関数にブレークポイントを設定する例を示します。
(gdb) break main
- 実行
ステップ実行の例を示します。
(gdb) step
参照
- gdbserver パッチ
- 割込みベクタ 修正パッチ