9

私はqemuが初めてで、シングルステップモードのエミュレーションが可能であることを読みました。サイクルごとに物理 RAM のいくつかのアドレスをダンプしようとしているので、これは役に立ちます。残念ながら、qemu のドキュメントは非常に悪いものです。qemuモニターからシングルステップモードを有効にする方法は知っていますが、すべてのステップで実行したいコードをどこに置くべきかわかりません。誰もこれについて何か情報を持っていますか?

4

3 に答える 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 に答える