私はqemuが初めてで、シングルステップモードのエミュレーションが可能であることを読みました。サイクルごとに物理 RAM のいくつかのアドレスをダンプしようとしているので、これは役に立ちます。残念ながら、qemu のドキュメントは非常に悪いものです。qemuモニターからシングルステップモードを有効にする方法は知っていますが、すべてのステップで実行したいコードをどこに置くべきかわかりません。誰もこれについて何か情報を持っていますか?
質問する
5227 次
3 に答える
3
http://www.xenproject.org/help/questions-and-answers/problem-with-vga-passthrough.html
上記のリンクは、QEMU のシングルステップ モードに入るコマンド ライン オプションです。次は、QEMU のソース コードを取得します ( http://wiki.qemu.org/Download ) 。
関数 monitor.c:do_singlestep(Monitor *mon, const QDict *qdict)
フラグ「singlestep」を設定するだけです。これは、ハードウェア シングルステップ エミュレーションをエミュレートするための「singlestep_enabled」と同じではないことに注意してください。
(グローバル var は vl.c で宣言されています)。
次に、targt-i386/translate.c のすべての関数を調べます。「singlestep」フラグがテストされる場所は次のとおりです。
if (singlestep) {
gen_jmp_im(pc_ptr - dc->cs_base);
gen_eob(dc);
break;
}
これは、バイナリが実行される (より正確には「変換」される) 場所、またはハードウェア例外が発生してハンドラーが発生する場所 (たとえば) です。変更したい動作があれば、ここで試すことができますか?
于 2014-05-24T17:41:32.437 に答える