高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1264
Generating an NMI Without a Programmer's Switch


Q: カーネルでハングしている Power Macintosh G4 (Mirrored Drive Doors) 上でリモートデバッギングを実行する必要があります。このコンピュータにはプログラマのスイッチがないのですが、どうしたらこのシステムにリモートの GDB セッションから接続できるのしょうか?

A: Mac OS X 10.1.2 から、Open Firmware のデバッグフラグの DB_NMI ビットが設定されている状態で Mac OS X を開始すると、システムの電源ボタンが押されたときに、システムをスリープ状態にしたり、スリープ状態から復帰させたりする代わりに、マスク不可能割り込み (NMI) が発生します。この機能は、物理的なプログラマスイッチが付いていないシステムで有効です。



注意:
iBook や PowerBook などのノート型コンピュータでは、Command キーを押したまま電源ボタンを押すと、NMI が発生します。



システムは、起動時に boot-args 設定変数からデバッグフラグを読み取ります。

DB_NMI ビットを設定するには、まず、ターミナルで次のコマンドを入力します。

% nvram boot-args

これにより、デバッグフラグの現在の設定が表示されます。今度は、次のコマンドを使って debug=0x4 を現在の設定に追加します。

% sudo nvram boot-args="<current settings> debug=0x4"

デバッグフラグに関する詳細については、Kernel Programming を参照してください。



注意:
電源ボタンを 5 秒以上押し続けると、直ちにシステムの電源が切れます。



電源ボタンのこの機能は、DB_NMI ビットが設定されることなく Mac OS X が再起動されるまで保持されます。debug=0x4 を省略して nvram コマンドを発行することによって、このビットをクリアできます。

% sudo nvram boot-args=""



注意:
このビットは、「システム環境設定」を使用して起動ディスクを変更する場合にはクリアされます。また、再起動を必要とするインストールを実行するときにも、このビットがクリアされる場合があります。




[2004 年 4 月 22 日]