Threads im Debugger blockieren und lösen

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu So verwenden Sie den Debugger


Ihre Thread-Anwendung muss im Debugger angehalten werden, bevor Sie einzelne Threads blockieren oder lösen können. Es gibt mehrere Möglichkeiten Ihre Anwendung anzuhalten, u.a. die folgenden:

  • Legen Sie Haltepunkte fest, und wählen Sie dann Start > Start oder Start > Gesamte Routine.
  • Klicken Sie in der IDE auf die Schaltfläche PausePauseButton.png, wenn die Anwendung ausgeführt wird.
  • Eine Exception wird ausgelöst, die die Anwendung anhält.

So blockieren Sie einen Thread im Debugger:

  1. Öffnen Sie das Fenster Threads, indem Sie Ansicht > Debug-Fenster > Threads wählen.
  2. Klicken Sie im Threads-Fenster mit der rechten Maustaste auf den Thread, den Sie blockieren möchten.
  3. Wählen Sie im Kontextmenü den entsprechenden Befehl aus:
    • Blockieren - blockiert den ausgewählten Thread
    • Alle anderen Threads blockieren - blockiert alle anderen Threads, aber nicht den ausgewählten

So lösen Sie einen Thread im Debugger:

  1. Öffnen Sie das Fenster Thread-Status, indem Sie Ansicht > Debug-Fenster > Threads wählen.
  2. Klicken Sie im Thread-Fenster mit der rechten Maustaste auf den blockierten Thread, den Sie lösen möchten. (Der Status sollte "Blockiert" lauten.)
  3. Wählen Sie im Kontextmenü den entsprechenden Befehl aus:
    • Lösen - löst den ausgewählten Thread
    • Alle Threads lösen - löst alle Threads, einschließlich des ausgewählten

So blockieren und lösen Sie Threads im Beispielprojekt THRDDEMO:

Das Projekt enthält drei benannte Threads (TBubbleSort, TQuickSort und TSelectionSort).

  1. Wählen Sie Start | Programme | Embarcadero Appmethod 1.17 | Beispiele, um zum Beispiel {{Path|\Object Pascal\RTL\Threads\thrddemo.dproj} zu navigieren.
  2. Öffnen Sie in der Projektverwaltung die Datei SortThds.pas.
  3. Suchen (Strg+F) Sie im Quelltext-Editor die folgende Quelltextzeile:
    Sort(Slice(FSortArray^, FSize));
  4. Klicken Sie auf die graue Leiste, um in dieser Codezeile einen Haltepunkt (Breakpoint.bmp) zu setzen.
  5. Drücken Sie F9, oder wählen Sie Start > Start, um das Programm auszuführen.
  6. Klicken Sie im Fenster Thread Sorting Demo auf Start Sorting. Die Ausführung wird in der Zeile mit dem Haltepunkt angehalten.
  7. Öffnen Sie das Fenster Thread-Status, indem Sie entweder Ansicht > Debug-Fenster > Threads wählen oder Strg+Alt+T drücken.
  8. Bitte beachten Sie, dass sich der Thread mit dem Namen TBubbleSort im Zustand Angehalten mit dem Status Haltepunkt befindet.
  9. Drücken Sie erneut F9. Der Thread TQuickSort wird erstellt und befindet sich im selben Zustand wie TBubbleSort.
  10. Drücken Sie wieder F9. Der Thread TSelectionSort wird angelegt und befindet sich auch im selben Zustand wie die beiden anderen Threads.

Sie können nun jeden dieser Threads blockieren und die anderen Threads ausführen, um das Blockieren zu demonstrieren. Einen blockierten Thread können Sie wieder lösen.

Siehe auch