デバッガでのスレッドの凍結および凍結解除

提供: Appmethod Topics
移動先: 案内検索

操作手順:デバッガを使用する への移動


個々のスレッドを凍結および凍結解除するには、まずデバッガでスレッド アプリケーションを停止する必要があります。アプリケーションを停止する方法は、以下を含めていくつかあります。

  • ブレークポイントを設定したあと、[実行|実行または[実行|ステップ実行を選択する。
  • アプリケーションの実行時に IDE で[一時停止]ボタン(PauseButton.png)をクリックする。
  • アプリケーションを停止させる例外が発生する。

デバッガの使用時にスレッドを凍結する

  1. [表示|デバッグ|スレッド]を選択して、[スレッドの状態]ウィンドウを開きます。
  2. [スレッドの状態]ウィンドウで、凍結するスレッドを右クリックします。
  3. コンテキスト メニューから、状況に当てはまるコマンド(以下のいずれか)を選択します。
    • [凍結] - 選択したスレッドを凍結する
    • [他のスレッドをすべて凍結] - 他のスレッドをすべて凍結する(選択したスレッドは凍結しない)

デバッガの使用時にスレッドを凍結解除する

  1. [表示|デバッグ|スレッド]を選択して、[スレッドの状態]ウィンドウを開きます。
  2. [スレッドの状態]ウィンドウで、凍結解除する凍結済みスレッドを右クリックします (対象となるスレッドの[状態]が[固定]でなければなりません)。
  3. コンテキスト メニューから、状況に当てはまるコマンド(以下のいずれか)を選択します。
    • [凍結解除] - 選択したスレッドを凍結解除する
    • [すべてのスレッドを凍結解除] - 選択したスレッドを含め、すべてのスレッドを凍結解除する

サンプル プロジェクト thrddemo を使ってスレッドを凍結および凍結解除する

thrddemo プロジェクトには、3 つの名前付きスレッド(TBubbleSort、TQuickSort、TSelectionSort)が含まれています。

  1. [スタート | すべてのプログラム | Appmethod 1.14 | サンプル]をクリックして、\Object Pascal\RTL\Threads\thrddemo.dproj サンプルに移動します。
  2. [プロジェクト マネージャ]で、SortThds.pas ファイルを開きます。
  3. コード エディタで、(Ctrl+F を使って)以下のソース行を見つけます。
    Sort(Slice(FSortArray^, FSize));
  4. 左マージン領域をクリックして、そのコード行にブレークポイント(Breakpoint.bmp)を設定します。
  5. F9 を押すか、[実行|実行]を選択して、プログラムを実行します。
  6. [Thread Sorting Demo]ウィンドウで、[Start Sorting]をクリックします。ブレークポイントを設定した行で処理が停止します。
  7. [表示|デバッグ|スレッド]Ctrl+Alt+T を使って、[スレッドの状態]ウィンドウを開きます。
  8. TBubbleSort という名前のスレッドが[停止]状況にあり、その[状態]が[ブレークポイント]になっていることに注意してください。
  9. もう一度 F9 を押し、TQuickSort スレッドが生成され TBubbleSort と同じ状態になることに注意してください。
  10. さらにもう一度 F9 を押し、今度は TSelectionSort スレッドが生成され他の 2 つのスレッドと同じ状態になることに注意してください。

これで、このうちの任意のスレッドを凍結し残りのスレッドを実行して、スレッドの凍結を実際にやってみせることができます。スレッドを凍結したあとで、そのスレッドを凍結解除することができます。


関連項目