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
.....
--- 以上