web-dev-qa-db-ja.com

Bochsでメモリダンプを行う方法は?

Bochs でメモリダンプをどのように行いますか?

(物理的または仮想のどちらか-しかし両方はさらに良いでしょう!)

2
user541686

この質問はもうしばらく経っていますが、同じ問題があり、解決できました。

GUIデバッグ

Bochsには、次のフラグを使用してアクティブ化できるビジュアルデバッガーが付属しています。

./configure \
--enable-x86-debugger \
--enable-debugger \
--enable-debugger-gui

いつビルドし、このオプションをBochs構成ファイルに追加します。

display_library: x, options = "gui_debug"

GUIデバッガーを開いた状態で、いつでも「ブレーク」ボタンを押すことができます。「表示」メニューには、「物理MemDump」および「線形MemDump」オプションがあります。開始アドレスを入力するだけで、bochsは4kBをダンプします。

GUIデバッグなし

必要に応じて、テキストモードを使用することもできます。ブレークポイントは、コマンド「lbreak addr」(線形の場合)または「pbreakaddr」(物理)で設定でき、設定されたブレークポイントを一覧表示するには、「infobreak」と入力します。それらを「d番号」で削除します。シングルステップ(s)および実行を継続する(続行)。

実行を一時停止すると、「x」(線形)と「xp」(物理)の後に、出力形式、バイト数、アドレスなどのオプションのパラメーターを続けてダンプできます。

例:

x /30bx 0xC0000000

線形アドレス0xC0000000から16進形式で30バイトのダンプを作成します。

ファイルへの書き込み

場合によっては、ダンプが画面で読み取れるほど大きくなることがあります。このような場合、コマンド「writemem」を使用してファイルにそれを行うことができます。

その構文は次のとおりです。

writemem "filename" linearAddress lenght_in_bytes

したがって、線形アドレス0xdeadbeefの最初の1024バイトを「ダンプ」ファイルにダンプする必要がある場合は、次のようになります。

writemem "dump" 0xdeadbeef 1024

動作するはずです。

詳細については、 http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html を参照してください。

2
DavidsonDFGL

おそらくあなたが探しているのは シミュレーションの保存と復元

CPU、memory、およびすべてのデバイスの状態を保存できるようになりました。でBochsを実行すると、ヘッダーバーに「Suspend」というボタンが表示されます。

(強調を追加)

0
Hugh Allen

Bochsコンソールでmemsaveおよびpmemsaveコマンドを試してください。

memsave addr size file

サイズサイズのアドレスから始まる仮想メモリダンプをディスクに保存します。

pmemsave addr size file

サイズサイズのアドレスから始まる物理メモリダンプをディスクに保存します。

0
user1686

どうやらあります writemem

    writemem                     dump a number of bytes of virtual memory starting from
                                 the specified linear address into a file

しかし、それは機能していないようです。

0
Milind R