デバッガでのスレッドの凍結および凍結解除
操作手順:デバッガを使用する への移動
個々のスレッドを凍結および凍結解除するには、まずデバッガでスレッド アプリケーションを停止する必要があります。アプリケーションを停止する方法は、以下を含めていくつかあります。
- ブレークポイントを設定したあと、[実行|実行]または[実行|ステップ実行]を選択する。
- アプリケーションの実行時に IDE で[一時停止]ボタン()をクリックする。
- アプリケーションを停止させる例外が発生する。
デバッガの使用時にスレッドを凍結する
- [表示|デバッグ|スレッド]を選択して、[スレッドの状態]ウィンドウを開きます。
- [スレッドの状態]ウィンドウで、凍結するスレッドを右クリックします。
- コンテキスト メニューから、状況に当てはまるコマンド(以下のいずれか)を選択します。
- [凍結] - 選択したスレッドを凍結する
- [他のスレッドをすべて凍結] - 他のスレッドをすべて凍結する(選択したスレッドは凍結しない)
デバッガの使用時にスレッドを凍結解除する
- [表示|デバッグ|スレッド]を選択して、[スレッドの状態]ウィンドウを開きます。
- [スレッドの状態]ウィンドウで、凍結解除する凍結済みスレッドを右クリックします (対象となるスレッドの[状態]が[固定]でなければなりません)。
- コンテキスト メニューから、状況に当てはまるコマンド(以下のいずれか)を選択します。
- [凍結解除] - 選択したスレッドを凍結解除する
- [すべてのスレッドを凍結解除] - 選択したスレッドを含め、すべてのスレッドを凍結解除する
サンプル プロジェクト thrddemo を使ってスレッドを凍結および凍結解除する
thrddemo プロジェクトには、3 つの名前付きスレッド(TBubbleSort、TQuickSort、TSelectionSort)が含まれています。
- [スタート|プログラム|Embarcadero RAD Studio Sydney|サンプル]をクリックして、
\Object Pascal\RTL\Threads\thrddemo.dproj
サンプルに移動します。 - [プロジェクト マネージャ]で、SortThds.pas ファイルを開きます。
- コード エディタで、(
Ctrl+F
を使って)以下のソース行を見つけます。Sort(Slice(FSortArray^, FSize));
- 左マージン領域をクリックして、そのコード行にブレークポイント()を設定します。
F9
を押すか、[実行|実行]を選択して、プログラムを実行します。- [Thread Sorting Demo]ウィンドウで、[Start Sorting]をクリックします。ブレークポイントを設定した行で処理が停止します。
- [表示|デバッグ|スレッド]か
Ctrl+Alt+T
を使って、[スレッドの状態]ウィンドウを開きます。 - TBubbleSort という名前のスレッドが[停止]状況にあり、その[状態]が[ブレークポイント]になっていることに注意してください。
- もう一度
F9
を押し、TQuickSort スレッドが生成され TBubbleSort と同じ状態になることに注意してください。 - さらにもう一度
F9
を押し、今度は TSelectionSort スレッドが生成され他の 2 つのスレッドと同じ状態になることに注意してください。
これで、このうちの任意のスレッドを凍結し残りのスレッドを実行して、スレッドの凍結を実際にやってみせることができます。スレッドを凍結したあとで、そのスレッドを凍結解除することができます。