Mona/QEMU/Monaデバッグ支援版


Mona/QEMU

QEMU Monaデバッグ支援版

Monaのデバッグを効率的にやりたい。

これは何か?

Monaアプリ/ドライバ等の制作者さんの中で、
実行環境として、QEMUを選択されている方用のものです

これはQEMU Ver0.6.1 に、QEMU on Windowsさんのサイト
にて提供される。
OpenVPNのTap for Win32用パッチ
デバッグのための非最適化パッチ
および、Yamami作の、シリアル出力をファイルへ出力
をあてたものです。

きっかけ

Monaでは、logprintf (シリアルコンソールへのログ出力) というデバッグ支援があります。
これは、シリアルコンソールへログを出力するものです。
VirtualPC や、VMWareでは、シリアル出力をファイルへ落とす機能がついているので
これを利用する事ができます。

しかしQEMUではどうか。QEMUでのシリアルポートへの出力結果は
CTRL + ALT + 3 キーで表示される。コンソールに出力結果は表示されるものの
これをファイルへ落とす機能は、2005/05現在の所無いようです。

そこで、ソース公開されているQEMUに少し手を加えてファイルへ落とす事はできないか?
と考え作成したものです。

使い方

(1) logprintf確認
Monaを起動した同フォルダ(qemu.exeと同フォルダ)に、SerOut.txt という名称のファイルができます。
logprintfの結果は、このファイルに出力されます。

(2)QEMU ステップデバッグ
 (1)の副産物として、QEMUは最適化無しのデバッグオプション付きでコンパイルしています。
 スピード面で不利になるので外そうかとも思いましたが、エミュレータ側(マシンの側)から
 動作を追える事で得るものもあるかと思い、そのままにしています。
 GDBや、フロントエンドであるInsighでステップ実行できます。(あくまでQEMUのステップ実行です。)
 Insigh の場合。
  CygWinコンソール上で、Insigh と叩く。
   File - Targetsetting にて
 Target:Exec
 Arguments:-L . -cdrom mona.iso -tap my-tap
と入力し、OK をクリック。
RUN-RUN で、qemu.exe を選択する。
これで、ステップ実行ができるると思います。

ダウンロード

サイズが大きいので、Wikiへ貼り付けられなかった為
QEMU Monaデバッグ支援DL
へあげておきます。

作り方

デバッグ支援版 QEMUのビルド方法を、記述しておきます。
バイナリだけ必要な方は、上からダウンロードするだけで使えるので不要です。

まず、QEMUのソースコードをダウンロードする。
最新は、Ver0.7.0だが、TAP-WIN32パッチがまだ見あたらない(Yamamiが見つけられないだけかも)
ので、Monesの都合からVer0.6.1ベースにする。
http://fabrice.bellard.free.fr/qemu/qemu-0.6.1.tar.gz

ビルドは、Mingwで行う。
環境構築は、QEMU on Windowsさんのサイト
を参考に。
注意点として、QEMU 0.6.1 から Makeするのに
zlib がいるようです。http://www.gzip.org/zlib/

MinGW環境にzlibを入れる。
$ ./configure --prefix=/mingw
$ make
$ make install

下記2つのパッチを入れる。
OpenVPNのTap for Win32用パッチ
http://www.h7.dion.ne.jp/~qemu-win/download/qemu-20050121-tap.patch

デバッグのための非最適化パッチ
http://www.h7.dion.ne.jp/~qemu-win/download/qemu-20041107-debug.txt

Tap for Win32用のパッチは、何故か分からないが
Makefile.target に対するパッチに失敗するので、ここは手動で当てる。
.rejファイルを確認して行うが、やりたい事は
VL_OBJS+= ・・ の所に
VL_OBJS+= tap-win32.o
をそれぞれ加えるだけです。

シリアル出力をファイル出力
ルートの、vl.c
int qemu_chr_write(CharDriverState *s, const uint8_t *buf, int len)
に手を加えます。
単純なソースです。

if(len == 1){
       fprintf(serial_out,"%c",*buf);
    }
のようなコードを追加。(ファイルポインタはグローバル。Mainで開いている。)
パッチ後、Makeする。~
./configure
make

コメント

コメントはありません。 コメント/Mona/QEMU/Monaデバッグ支援版?

お名前:

MENU

now: 1

リンク


最新の20件
2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 4963, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:47:55 (3831d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.045 sec.