Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Wie finde ich heraus, ob ein Prozess sich aufgehangen hat?

  Alt 18. Apr 2013, 14:13
Reagiert nicht bedeutet nur, dass das GetMessage/PeekMessage nicht ordentlich aufgerufen wird - dh die Anwendung rechnet gerade intensive, weshalb es dazu nicht kommt - Windows interpretiert das so, dass die Anwendung sich aufgehangen hat.

Du kannst aber, wenn du weißt, dass nach 5 Sek. zB die Anwendung normalerweise fertig sein sollte, ein Timeout mit 10 sek setzen dann einfach terminieren.
WaitForSingleObject() mit 10*1000 MSec zB

Das mit dem Debugger - schau dir die Parameter bei CreateProcess an - "DEBUG_ONLY_THIS_PROCESS"

Anschließend, per WaitForDebugEvent() Loop die Debug-Events abholen und kucken. Da interessiert dich "EXCEPTION_DEBUG_EVENT" (wobei die erste Exception ein Sonderfall ist und einfach zu ignorieren ist)
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (18. Apr 2013 um 14:16 Uhr)
  Mit Zitat antworten Zitat