• ベストアンサー

ブレークポイントについて教えてください

組み込みソフト用のデバッカでH/WブレークポイントとS/Wブレークポイントという 区別がありますがこれらはどう違うのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • quenista
  • ベストアンサー率28% (122/425)
回答No.1

要は、ICEの事ですね。 基本的には、デバッガの機種毎に違いが有りますので、その辺をご了承下さい。 H/Wブレークポイントとは、ブレークアドレスを回路で検出してブレーク処理を行う方法。 S/Wブレークポイントとは、ブレークアドレスにインターラプトHALT等のコードを埋め込んで、ブレーク処理を行う方法。 特徴として、H/Wブレークの方が、外部ROM領域でもブレークを張れる事や、複雑な条件のブレークポイント設定を出来る事が多い。 逆に、S/Wブレークは、エミュレートROMエリアなら多数のブレークポイントを張る事が出来る。 こんな感じで、解かって頂けます?

takobozu
質問者

補足

回答ありがとうございます、かなりわかってきました。もうすこし詳しく教えて頂きたいのですが。 >S/Wブレークポイントとは、ブレークアドレスにインターラプトHALT等の>コードを埋め込んで、ブレーク処理を行う方法。 これは実行コードの途中にHALTコードをICEが埋め込むということでしょうか?そうするとそれ以降のアドレスにある実行コードのアドレスがずれてしまって 実行できなくなってしまう気がするのですが?

その他の回答 (1)

  • quenista
  • ベストアンサー率28% (122/425)
回答No.2

>これは実行コードの途中に・・・ 簡単に言うと、エミュレートているROM空間のブレークポイントのアドレスの内容を、一時的にすげ替えるイメージで良いと思います。 勿論、元のアドレスとコードは別の領域に保持させて居て、ブレーク処理の中で復帰させます。 この為、S/Wブレークでも個数の制限が出る事に成ります。 又、基本的にこの方法となる為、キャッシュ等のパイプラインを持つCPUでは、誤動作する事も多々有ります。 (コツとしては、ブランチ先にブレークポイントを張ると、割と正確に動作します。) 後、余談ですが、ROMICEなんかはS/Wブレークのみですので、この方法でブレークさせてます。

関連するQ&A