Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Debugger: Wait Chain (https://www.delphipraxis.net/177911-debugger-wait-chain.html)

Der schöne Günther 5. Dez 2013 09:50


Debugger: Wait Chain
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mir fehlt das Windows-Allgemeinwissen. Wahrscheinlich ist die einfache Antwort "Nein".

Neulich hing meine Applikation. Ein WinAPI-Aufruf blockierte. Ich wusste nicht, warum. Die Spalte "Wait Chain" im "Thread-Status"-Fenster des Debuggers erzählte mir allerdings, dass es daran liegt, dass ein
Delphi-Quellcode:
SendMessage
an ein Fenster des Prozesses X, Thread Y aussteht. Das war eine großartige und extrem effektive Hilfe.

Kann ich so etwas auch? Dass, hielte man die Anwendung an, im Debugger eine Beschreibung sehen kann, was meine Threads grade so machen? Ob sie grade schlafen oder blockieren?

Ich habe leider kein Bildschirmfoto gemacht. Im Anhang etwas gestelltes.

sx2008 5. Dez 2013 10:04

AW: Debugger: Wait Chain
 
SendMessage ist eine blockierende Funktion. (PostMessage blockiert nicht, sondern platziert die Message nur in die Messagequeue)
Sie kehrt nicht eher zurück als dass die gesendete Message von Handler des Zielfensters bearbeitet wurde.
Solange dein Hauptthread nicht läuft werden keine Messages verarbeitet und SendMessage blockiert.
Sollte der Hauptthread seinerseits gerade auf den Thread (oder einen anderen Thread der gerade pausiert) warten ergibt sich ein Deadlock.

Der schöne Günther 5. Dez 2013 10:06

AW: Debugger: Wait Chain
 
Danke für die Antwort :-)

Das mit SendMessage/PostMessage und allem habe ich verstanden.

Mir ging es darum, rein für den Entwickler im Debugger anzeigen zu können "Dieser Thread macht gerade Spinlock weil ..." oder "Dieser Thread blockiert weil er auf Daten vom ComPort wartet". Wie im Bild.

Der schöne Günther 10. Dez 2013 19:33

AW: Debugger: Wait Chain
 
Noch jemand eine Idee?

mjustin 10. Dez 2013 21:07

AW: Debugger: Wait Chain
 
In

http://stackoverflow.com/questions/4...-installations

wird unter anderem aufgelistet welche Objekte in WTC erscheinen können:
Zitat:

According to the wait chain traversal document that David M linked to, WTC is available for the following synchronization objects:

* ALPC
* COM
* Critical sections
* Mutexes
* SendMessage
* Wait operations on processes and threads

Der schöne Günther 10. Dez 2013 21:20

AW: Debugger: Wait Chain
 
Exzellent, das bringt mich weiter. Vielen Dank :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz