割り込みマスクがクリアされる理由ですが、OS やデバッガがどれだけのレベルで割り込みマスクを管理しているかによると思います。
CPU 内の制御レジスタ、又はフラグレジスタによる割り込みマスクであれば、デバッガが別タスクで動作するタイプのもの、又はそれら制御レジスタの内容を保障するデバッガであれば割り込みマスクは保障されると思います。(そうでなければ割り込み状態は保障されないと考えたほうが良いと思います)(また、デバッガが実行されている間に、割り込みが発生する可能性も考慮したほうが良いと思います)
また、割り込みコントローラー上の割り込みマスクであれば、一旦ブレーク割り込みなどが発生し、デバッガなどのコードへ移行すると状態が変化するのは必然です。
一般論ですが (スコア:1)
割り込みマスクがクリアされる理由ですが、OS やデバッガがどれだけのレベルで割り込みマスクを管理しているかによると思います。
CPU 内の制御レジスタ、又はフラグレジスタによる割り込みマスクであれば、デバッガが別タスクで動作するタイプのもの、又はそれら制御レジスタの内容を保障するデバッガであれば割り込みマスクは保障されると思います。(そうでなければ割り込み状態は保障されないと考えたほうが良いと思います)(また、デバッガが実行されている間に、割り込みが発生する可能性も考慮したほうが良いと思います)
また、割り込みコントローラー上の割り込みマスクであれば、一旦ブレーク割り込みなどが発生し、デバッガなどのコードへ移行すると状態が変化するのは必然です。
具体的な環境を詳しくは知らないのであくまで一般論ですけどネ…(^^;
Re:一般論ですが (スコア:1)
環境>ターゲット MPU は H8 で、 JTAG ICE 使ってデバッグしてます。ブレークは、どうやらブレークする箇所を未定義の命令に書き換えることで実現してるみたいです。たしかに色々と制限のありそうなところではありますね。
MPU のデータシートやら ICE の取説やら色々調べてみたんですが、結局本当のところの原因は分かりませんでした。探し方が悪いのか? とりあえず動作確認が優先なので原因調べは保留してますが、余裕があればもう少ししっかりと調べてみたいと思ってます。