AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Prüfen ob Programm abgestürzt ist
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob Programm abgestürzt ist

Ein Thema von iDope · begonnen am 5. Dez 2013 · letzter Beitrag vom 10. Dez 2013
Antwort Antwort
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#1

AW: Prüfen ob Programm abgestürzt ist

  Alt 7. Dez 2013, 14:49
Man muss doch nur herausfinden wie Windows das selbst macht wenn ein Process hängt.
Gar nicht bzw. nicht korrekt. Ich weiß nicht wie oft Kunden schon ein Programm abgeschossen haben, nur weil Windows meldet "keine Rückmeldung".

Winodws meldet das aber nur aufgrund der Tatsache, ob das Programm seine Messages abarbeitet. Bei single threaded passiert das eben nicht, obwohl das Programm z.B. nur auf die Antwort eines DB-Servers wartet oder selbst noch am Rechnen ist. Bei multithreaded ist es dann genau umgekehrt.

Code:
loop
  TuWas;
until IrgendEineBedingung;
Wie entscheidest du ("von außen"), ob die Bedingung irgendwann erfüllt sein wird?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Prüfen ob Programm abgestürzt ist

  Alt 7. Dez 2013, 19:59
Der Umkehrschluss ist natürlich der, das man anfängt, diese Dinge in einen Thread auszulagern, eben damit Windows nicht mehr meckert,übrigens zu Recht: Es kommt von der Anwendung ja wirklich keine Rückmeldung.

Wenn man auf eine Datenbankabfrage wartet, dann muss man die eben auch abbrechen können. Wenn die Komponente das nicht hergibt, muss man eben eine andere nehmen.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.689 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Prüfen ob Programm abgestürzt ist

  Alt 8. Dez 2013, 01:22
Nur hilft das überhaupt nicht, wenn man auf das zu überwachende Programm keinen Einfluss hat. Also im Sinne von selbst daran rumprogrammieren.

Fazit ist doch: Man kann gewisse Anzeichen von aussen als Hinweis interpretieren, dass ein Programm nicht mehr so läuft, wie es gedacht ist. Man kann damit allerdings auch sehr daneben liegen. Ob das so ist, ist von der Art und Weise abhängig, wie das zu überwachende Programm geschrieben ist. Eine allgemeingültige Lösung gibt es schlicht und ergreifend nicht. Und selbst wenn man das zu überwachende Programm selbst in der Hand hat, ist es noch immer recht schwierig. (Was bringt einem ein Life-Beat-Thread der einem Überwacher über z.B. TCP sein Vorhandensein mitteilt, wenn der eigentliche Arbeitsthread in einer Endlosschleife hängt z.B.? Solche Dinge müssten sehr gut durchdacht werden.)

Die Lösung des Problems ist hier daher davon abhängig, wie (und ob) man dem zu überwachenden Programm anerkennen kann, dass es gegen eine Wand gelaufen ist. Und zudem, ob dies aus einem fremden Prozess mit API Mitteln überhaupt ersichtlich werden kann. Ohne sehr genaue Kenntnis des Programms kann man daher imho nur ähnlich naive Methoden nutzen wie es Windows selbst macht, ohne jegliche Garantien auf Korrektheit der Absturzerkennung.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Alt 8. Dez 2013, 01:32     Erstellt von Smut
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#5

AW: Prüfen ob Programm abgestürzt ist

  Alt 8. Dez 2013, 08:48
Wie oft hatte ich das schon, das Windows 7 behauptet hat, ein Programm reagiere nicht mehr....
Manchma war es sogar von der gleichen Software Schmiede...
dann einfach noch ein bisschen gewartet... und hoppla es lief ja doch.
Das sind zwei verschiedene Sachen. Windows prüft ausschließlich, ob das Programm noch reagiert. Und da ist die Meldung auch absolut korrekt, wenn ein Programm nicht mehr reagiert. Das ist auch das Störende für den Bediener.

Wenn hingegen ein Programm länger läuft und dabei korrekterweise noch auf die GUI reagiert (Threads), erkennt Windows auch nicht, wenn der Vorgang an sich "abstürzt". Eben weil eine solche Absturzerkennung nicht möglich ist.

Ein Hängen im Sinne von nicht reagieren kann man jedenfalls einfach über die glaube ich schon genannte API Funktion herausfinden. Damit erkennt man das gleiche wie Windows selbst auch anzeigt. Wobei ich das mittlerweile nur noch bei wenigen kleineren Softwaretools als Problem habe. Die größeren Programme sind da besser und reagieren auch bei längeren Vorgängen noch.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Prüfen ob Programm abgestürzt ist

  Alt 8. Dez 2013, 09:04
Hallo,

Da es ein fremdes Programm ist,
was zusätzlich auch noch im Netz läuft,
definiere ich "abgestürzt" einfach mit
"erfüllt seine Funktion nicht mehr so wie erwartet".

Das prüfe ich 5mal im Abstand von 1 Minute
und schieße es dann ab.

Heiko
Heiko
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: Prüfen ob Programm abgestürzt ist

  Alt 8. Dez 2013, 09:50
...und schieße es dann ab....
... und starte es dann neu?

Leider kann man nicht jedes Programm 'abschießen', vor allen Dingen gerade die, die 'hängen'.

Aber wenigstens hast Du das für dich definiert und hier kundgetan: Alle anderen reden nur um den heißen Brei herum
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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