高速実行モードはデバッグ機能の 1 つです。このモードでは、プログラムを通常の状態で実行しながら、いつでも処理を引き継ぐことができるように、バックグラウンドでデバッガが待機しています。プログラムが異常終了しても、コアダンプが出力される前にデバッガがプログラムを保存します。
できるだけ速くプログラムを実行したいが、まだデバッグする必要があるという場合は、デバッガの開始時に高速実行モードを選択してください。「デバッガ」ウィンドウが表示されますが、プログラムはシェルから実行されているときとまったく同様に実行されます。このとき、プログラムのシンボルは読み込まれません。
プログラムを終了するような条件が検出されると、デバッガはデバッグモードに切り替わり、プログラムのシンボルが読み込まれます。このとき、多少の遅延が発生しますが、プログラムを実行しながらデバッグ機能を利用することができます。
高速実行モードでプログラムを実行している場合は、ブレークポイントに達したときや「割り込み」ボタンをクリックして手動で実行に割り込みをかけたときなど、実行に割り込みがあったときにいつでもデバッグモードに切り替えることができます。
高速実行モードには、次のような利点があります。
プログラムでセグメント例外やその他の異常状態が検出されると、プログラムが異常終了する前に Sun WorkShop が割り込みます。このため、プログラムを実行しながらデバッグ機能を完全に利用できます。高速実行モードを使用せずにプログラムを実行した場合は、Sun WorkShop がプログラムを終了するので、限定されたデバッグ操作のみでコアファイルをデバッグしなければなりません。
処理のどの時点でもプログラムに割り込むことができ、自動的にデバッガに制御が渡されるので、ブレークポイントの設定、データの監視、ソースコード内のブラウズなどを行うことができます。デバッグ機能を利用するために、プログラムを再起動する必要はありません。
高速実行モードで実行する場合は、プログラムは高速で実行されますが、必要に応じて、すべてのデバッグ機能を利用できます。
「デバッグ」ウィンドウを初めて開くときにだけ、遅延が起こります。2 度目以降は、シンボルテーブルは読み込まれません。
プログラムがクラッシュしたり、コアダンプを出力したりすることはありません。これは、デバッガがプログラムを停止させるためです。
クラッシュしそうなプログラムに対して、すべてのデバッガ機能を使用することができます。コアファイルに接続する場合に使用できるデバッガ機能は限定されています。
デバッガが、クラッシュしそうなプログラムの制御を受け取ると、関数呼び出しをポップして戻ることができます。
高速実行モードは、次のような場合に使用します。
デバッグが済んでいると考えられる場合
シンボルの読み込みに時間をかけたくない場合
修正した個所だけをテストしたい場合
デバッグモードと高速実行モードを切り替えながらプログラムをデバッグすることによって、それぞれの機能の長所を活用できます。
実行またはデバッグするプログラムを選択するたびに、高速実行モードとデバッグモードのどちらでプログラムを実行するかを選択できます。
Sun WorkShop のメインウィンドウまたは「デバッグ」ウィンドウの「デバッグ」メニューを使って、現在のプログラムの、高速実行モードとデバッグモードを切り替えることができます。
プログラムが高速実行モードで起動するようにデフォルトを変更するには、Sun WorkShop のメインウィンドウで「オプション」⇒「デバッグ用オプション」を選択した後、「デバッグオプション」ウィンドウの「カテゴリ」リストから「デバッグ性能」を選択し、「デフォルトとして保存」をクリックします。
プログラムに変更を加え、その変更が正しく動作するものと仮定します。プログラムを再構築した後、最小のオーバーヘッドでプログラムが実行されるように、「デバッグ」メニューから「高速実行モード」を選択します。Sun WorkShop の起動後、はじめてプログラムを実行またはデバッグする場合は、「デバッグ」ウィンドウが開くのに、わずかな遅延が生じます。
プログラムを開始するには、「開始」ボタンをクリックするか、「デバッグ」ウィンドウで「実行」⇒「開始」を選択します。プログラムはセグメント例外が見つかるまで、正常に実行されます。
プログラムが終了して、コアダンプを出力する前に、Sun WorkShop はデバッグモードに切り替わり、プログラムのシンボルを読み込みます。これで、Sun WorkShop のデバッグ機能をすべて利用でき、デバッグモードでデバッグを開始したときと同じようにプログラムをデバッグできるようになります。ここで、変更、修正、継続実行の過程を経て、最終的にプログラムを再構築します。
プログラムを実行する前に、再び高速実行モードを選択します。
今回は一時停止はないものの、プログラムが無限ループに入ったようです。「割り込み」ボタンを押すと、プログラムが停止して、デバッグ用のシンボルが読み込まれます。データの値の確認、ブレークポイントの設定など、必要なデバッグ操作を行ってバグを追跡します。
さらにプログラムを再構築し、高速実行モードを使用可能にして、プログラムを再び実行します。これで、プログラムは問題なく実行されるようになります。