zxLinux
リモートGDB
V.0.1


2000/Mar/18
たけおか@AXE




0.はじめに

この文書はzxLinuxのためのリモートgdbについて述べている。
本リモートgdbシステムは、ZaurusとIntel版LinuxマシンをRS232Cシリアル回線
で接続し使用する。
SH-3用gdbの本体をIntel版Linuxマシンで動作させ、Zaurus上ではリモート・デ
バッガを動作させる。
Zaurus上で動作するリモート・デバッガをgdbserverと呼ぶ。
ユーザはIntel Linux上のgdbと対話し、コマンドを発行すると、シリアル回線を
通して、Zaurusu上のgdbserverに指令が送られ、
メモリ参照/書き換え
レジスタ参照/書き換え
ブレークポイント設定/解除
などが行える。
本文書では、リモートgdbのインストール方法、使用方法について述べる。


gdbserverは一度起動すると、ずっと生存し続ける。
(zxLinuxの起動、終了とは無関係にずっと存在し動作を続ける)
よって、gdbserverは何度も起動してはいけない。

現在、リセット以外にgdbserverを終了させる方法は存在しない。
デバッグが終了したら、ザウルスをリセットして、gdbserverプロセスを 無くすべきである。

リモートgdbの原理から自明であるが、gdbserverが生き続けている間は、 シリアルポートが使用できない。
シリアルポートを使用する前に、ザウルスのリセットを行って、gdbserverを 終了させなければならない。


(original:2000/Feb/15 komae@AXE)





1. 配付ファイルの説明

gdb-4.18.tar.gz 通常のGDB-4.18のソース・アーカイブ

gdb-4.18-shxtal.patch GDB-4.18に対する変更パッチ

zgdb.tgz gdbserverのソース

gdb-4.18-shxtal-binary.tgz GDB-4.18のバイナリ配付アーカイブ
zgdb-binary.tgz gdbserverのバイナリ配付アーカイブ




2. 各ソースのmake方法

ここでは、ソース・アーカイブからのmake方法を述べる。
バイナリ配付の場合には、本章の手順は必要無い。

1) gdb

(i) アーカイブの展開とパッチの適用

適当なディレクトリを作成し、アーカイブを展開。その後、zxLinuxのための
パッチを適用する。

% tar xfz gdb-4.18.tar.gz
% patch -p0 < gdb-4.18-shxtal

(ii) make方法

gdbのコンフィギュア、makeを行う。

% cd gdb-4.18
% ./configure --prefix=/usr/local/zxlinux/gdb --target=shxtal
:
% make
:

(iii)インストール

# make install
:


インストールが終了すると、
/usr/local/zxlinux/gdb/bin
/usr/local/zxlinux/gdb/lib
にリモートgdb関連ファイルがインストールされる。





2) gdbserver

(i) gdbserverコンパイル環境

gdbserverのmakeには、zxLinuxカーネル開発キットを使用する。
すなわち、あらかじめ、zxLinuxカーネル開発キットをインストールし、
% set path=(/usr/local/zx/bin $path)
% setenv LD_LIBRARY_PATH /usr/local/zx/lib
としなければ、ならない。
(詳細は、「ZxLinux開発ドキュメント」を参照のこと)


(ii) アーカイブの展開

適当なディレクトリを作成し、アーカイブを展開する。

% tar xfz zgdb.tgz

(iii) make方法

makeを行う。

% cd zgdb
% make
:

(iv) 完成
make後にできるファイルは、次の通り。

ZDBG.APL
ZDBG.BIN
ZDBGDM00.JPN
ZDBGSRV.BIN

これは、MOREソフトである。
これらのファイルを、コンパクト・フラッシュ・カードなどでZaurusに持ち込
む。





3. バイナリ配付の展開

1) gdbの展開
IntelLinuxにて、
# tar xvzf gdb-4.18-shxtal-binary.tgz
とする。


2) gdbserverの展開
Linuxマシンにて、
% tar xvzf zgdb-binary.tgz
とする。
(通常のUNIXマシンでは、tarの代りにgtarコマンドを使用する)
展開後にできるファイルは、次の通り。

ZDBG.APL
ZDBG.BIN
ZDBGDM00.JPN
ZDBGSRV.BIN
これらのファイルを、コンパクト・フラッシュ・カードなどでZaurusに持ち込
む。




4. gbd使用の準備

1) pathに、
/usr/local/zxlinux/gdb/bin
を加える。

2) LD_LIBRARY_PATHに、
/usr/local/zxlinux/gdb/lib
を加える。

3) IntelLinuxマシンとZaurusを、シリアルのクロス・ケーブルで接続す
る。(以下の例では、/dev/cua0を使っている)




5. gdbの使い方

1) デバッグ・ターゲットのプログラムを作る。

本リモートgdbはzxLinuxアプリケーションを対象としている。
ターゲット・プログラムをコンパイルする時は、zxLinux開発キットを使用する。
ターゲット・プログラムをコンパイルする時は、
%cc -g ファイル名
の様に"-g"オプションを指定せねばならない。
その他は、通常アプリケーションの開発と同様である。

コンパイルが終了したら、実行形式バイナリをext2fsイメージに格納して、
そのext2fsイメージをコンパクト・フラッシュ・カードなどで、 ザウルスに持ち込む。


2) デバッグ・サーバを動かす。

Zaurus上のMOREインデックス画面で、debuggerのアイコンにタッチし
て起動する。

起動すると、黒色のバックに、白色の文字で、

to start debugger
----- touch any where

to exit
----- push MODORU button

と出る。

ここで、画面をタッチすると、gdbserverが動く。

戻るボタンを押すと、何もせずに終了する。

gdbserverは一度起動すると、ずっと生存し続ける。
(zxLinuxの起動、終了とは無関係にずっと存在し動作を続ける)
よって、gdbserverは何度も起動してはいけない。


3) zxLinuxを起動する

Zaurus上のMOREインデックス画面で、zxLinuxのアイコンにタッチして
zxLinuxを起動する。


4) dbgコマンドを使用する

zxLinuxに標準添付のコマンド"dbg"コマンドを使用する。
$ dbg ターゲット・ファイル名
として、ターゲット・プログラムをデバッグ対象として起動する。

dbgコマンドは、ターゲット・プログラムを特殊な方法で起動する。
zxLinuxカーネルは、ターゲット・プログラムのプロセスを生成した後、 gdbserverにターゲット・プロセスの生成を通知する。
ターゲットはプロセスとして起動するが、ユーザがgdbを通して走行指令を出す まで、走行しない。


5) IntelLinuxマシン上の、ターゲット・プログラムのELFバイナリやソー
ス・ファイルのあるディレクトリで、GDBを動かす。

% cd sbin-src-xxx
% shxtal-gdb -b 115200 GCC-more.elf
.....
(gdb) target remote /dev/cua0
.....


--- 以上