Mona/QEMU/Monaデバッグ支援版 の変更点



 [[Mona/QEMU]]
 
 #contents
 
 *QEMU Monaデバッグ支援版 [#t04c97bb]
  Monaのデバッグを効率的にやりたい。
 **これは何か? [#l207d3cd]
 Monaアプリ/ドライバ等の制作者さんの中で、~
 実行環境として、QEMUを選択されている方用のものです~
 
 これはQEMU Ver0.6.1 に、[[QEMU on Windowsさんのサイト:http://www.h7.dion.ne.jp/~qemu-win/index-ja.html]]~
 にて提供される。~
 [[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]]~
 および、[[Yamami]]作の、シリアル出力をファイルへ出力~
 をあてたものです。~
 
 
 **きっかけ [#jbe10f15]
 Monaでは、logprintf (シリアルコンソールへのログ出力) というデバッグ支援があります。~
 これは、シリアルコンソールへログを出力するものです。~
 VirtualPC や、VMWareでは、シリアル出力をファイルへ落とす機能がついているので~
 これを利用する事ができます。~
 ~
 しかしQEMUではどうか。QEMUでのシリアルポートへの出力結果は~
 CTRL + ALT + 3 キーで表示される。コンソールに出力結果は表示されるものの~
 これをファイルへ落とす機能は、2005/05現在の所無いようです。~
 
 そこで、ソース公開されているQEMUに少し手を加えてファイルへ落とす事はできないか?~
 と考え作成したものです。~
 
 **使い方 [#x923ed20]
  (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 を選択する。
  これで、ステップ実行ができるると思います。
 
 **ダウンロード [#s515b011]
 サイズが大きいので、Wikiへ貼り付けられなかった為~
 [[QEMU Monaデバッグ支援DL:http://f38.aaa.livedoor.jp/~yamami/bin/]]~
 へあげておきます。
 
 
 **作り方 [#a6a26864]
 デバッグ支援版 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さんのサイト:http://www.h7.dion.ne.jp/~qemu-win/PortingTips-ja.html]]~
 を参考に。~
 注意点として、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
 
 
 ** コメント [#pfb269a6]
 #comment(below)
 -すばらしい機能です。まとめありがとうございます。 -- [[ひげぽん]] &new{2005-05-12 (木) 16:51:56};

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

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.004 sec.