• 締切済み

ソフトウエアブレイク

すみません、ソフトウエアブレークについて 教えてください。 いつも何気なく、デバッガを使って ブレイクポイントを張っていますが その仕組みが知りたいのです。 ちょっと調べたのですが、 ブレイクさせたい位置の命令の直前に 内部割り込みを発生する命令を挿入するそうですが その後どのようにしてソフトウエアブレークを実現させるのでしょうか。 よろしくお願いします。

みんなの回答

noname#65902
noname#65902
回答No.1

ハードウェアブレークや、エミュレータ(装置)を使った場合は多少違いますが それは置いといて... > 内部割り込みを発生する命令を挿入するそうですが > その後どのようにして 割込みですからPCをスタックに保存してジャンプするわけです。 そのジャンプ先がデバッガプログラムに行くだけのことです。 その後、デバッガプログラムが動作するために全レジスタを保存します。 (go の直前に全て復帰します) デバッガプログラム自身もメモリのどこかに置かれて実行するので、 その分を占有します。 このように、多くの場合、「デバッガを使うために」資源のいくつかを占有します。 CPU によっては、デバッガ用の特殊な資源を内蔵しているものも あります。(一般公開してません) go の直前に命令を書き換え、break したら書き戻す、ということを してるので、 命令自身を参照したり書き換えたりするプログラムに ソフトウェアブレークを使うと不都合を生じることがあります。 昔はそういうアクロバティックなプログラムもありましたっけ。

masa_ki
質問者

補足

回答ありがとうございます。 再度質問させてください。 そのデバッガプログラムでは何をしているのでしょうか。 goするためのキー受付を待っているのでしょうか。 そのあたり詳しいHPありましたら 教えてください。よろしくお願いします。

関連するQ&A