2012-02-06 5 views
0

アセンブリプログラムに使用できるデバッグツールとその使用方法が不思議です。.ASMファイルデバッグツール

私はアセンブリで簡単なブートローダを書いています。しかし、論理が正しいと思っていても、私が望んでいたように、それは正常に動作していません。だから、私はデバッガを使って、ブートローダを調べて、レジスタの状態をチェックすることができるようにしています。

私は.asmを.elfと.oにコンパイルするGDBを試しました。もしそうなら、次のステップは何ですか?)また、私はBochsシミュレータに内部デバッガがあることを読んでいますが、どのように使用するのかはまったくわかりません。私もVisual Studio 2010、windbgを持っていますが、.asmファイルのデバッグにどのように使用するのか分かりません。

以前にこれを実行していれば、簡単に回答できます。どんな助けでも本当に感謝しています。

敬具

+1

この前の回答を確認してください:http://stackoverflow.com/questions/2611624/low-level-qemu-based-debugging(osdev wikiのリンクに注意してください) – user786653

+0

リンクありがとうございますが、私はそれを考えていません私の状況に非常に役立ちます。私は間違っている可能性がありますが、 – ElectroJunkie

+0

http://stackoverflow.com/questions/28811811/using-gdb-in-16-bit-mode –

答えて

1

デバッグブートローダのコードにしたい場合は、私はあなたが既に知っていると確信しているとして、あなたは明らか。コード自体がで実行しようとしていることと同じ環境でそれを実行する必要があり、ブートローダのコードが実行されますリアルモードでBIOSがPOSTを終えると、ブートローダは7c00hでメモリにロードされ、そのアドレスへのジャンプが実行されます。

明らかに、この種の環境は、コンピュータを稼働させて「本当の」オペレーティングシステムが既にロードされていると、確実にエミュレートすることはできません。そのときは、CPUがプロテクトモード(またはAMD64の場合はロングモード) )。この時点で唯一のオプションは、オペレーティングシステム内の実際のPCをエミュレートするために、QEMUまたはBochsを使用することです。私は過去に書いたブートローダのコードをデバッグするためにBochsを使いました。詳細な手順については、マニュアルページを参照してください。

+0

ダニエルありがとう。 Bochsの内部デバッガを正しく動作させることができなかったのは奇妙なことです。私はコマンドラインで設定しようとしましたが、それは私のためにはうまくいきませんでした。 (コマンドラインでさえ、GUIエミュレータを起動するだけです...)私はマニュアルを読む際に別のショットを与えるつもりです。 – ElectroJunkie

+0

私はそれをgdbに接続していましたが、そのテクニックは大丈夫でした。私はそれがどこかのマニュアルだと確信しています。 –