5

MBRセクション用のx86アセンブリプログラムを作成しました。私はそれを次のようにコンパイルします:

nasm hellombr.asm -f bin -o hellombr.img

次に、qemuで実行します。

qemu -fda hellombr.img -boot a

問題は、ソースレベルでプログラムをデバッグするにはどうすればよいですか?

4

3 に答える 3

4

nasmELFファイルにデバッグシンボルを作成してから、これをフラットバイナリにダンプして、MBRで使用する必要があります。次に、ELFファイルから必要なシンボルを読み取るようにGDBに指示できます。

完全な手順は次のようになります。

$ nasm hellombr.asm -f elf -g -o hellombr.elf
$objcopy-Oバイナリhellombr.elfhellombr.img
$ qemu -s -S -fda hellombr.img -boot a
$ gdb
(gdb)シンボルファイルhellombr.elf
(gdb)ターゲットリモートローカルホスト:1234

この答えをqemu見るために私が渡すフラグの説明については。

于 2012-04-30T15:47:12.637 に答える
1

qemuを使用する代わりに、bochsを使用します。低速ではありますが、完全に互換性があります。これもエミュレーターですが、ソースから作成する場合は、これらのフラグを使用して次のようにビルドします。

./configure --enable-debugger --enable-disasm --disable-docbook
make
make install

コードにブレークポイントを設定し、コードをステップスルーして、GDT、IDT、および必要なすべての情報を表示できます。

于 2011-12-26T20:20:51.267 に答える
0

本当に良い(そして簡単な)方法は、BochsでIDAを使用することです。ここに、ブートローダー開発のための他のヒント/提案とともに、優れたブログ投稿があります。

于 2011-12-26T21:00:32.913 に答える