Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programmabsturz verursachen (https://www.delphipraxis.net/115313-programmabsturz-verursachen.html)

skyobserver 10. Jun 2008 09:15


Programmabsturz verursachen
 
Hallo zusammen!

Das mag jetzt etwas merkwürdig klingen, aber ich versuche ein Programm dazu zu bringen
z.B. auf Knopfdruck so abzustürzen, daß es aus dem Speicher fliegt.

Zur Erklärung: Ich teste eine Watchdog Komponente, welche abgestürzte Programme melden
soll. Nur bekomme ich mein Programm nicht dazu aus dem Speicher zu fliegen (Ich weiß
Programmierer versuchen normalerweise das Gegenteil zu erreichen...)!

Folgende Versuche verursachen zwar eine Exception bleiben aber im Speicher und
funktionieren sogar weiter...

Delphi-Quellcode:
asm
  MOV AX, [4711]
end;
Delphi-Quellcode:
procedure StackOverflow;
begin
  StackOverflow;
end;
Das Programm wurde außerhalb der IDE aufgerufen.

Wo liegt mein Fehler? (Kann man das überhaupt so sagen?)

Daniel Schuhmann 10. Jun 2008 09:19

Re: Programmabsturz verursachen
 
Wie wär's mit einem einfachen

Delphi-Quellcode:
Halt(0);
Obs abstürzt oder nicht, dürfte doch egal sein. Aus dem Speicher ist aus dem Speicher.

skyobserver 10. Jun 2008 09:27

Re: Programmabsturz verursachen
 
Das ist genau das, was ich gesucht habe!

Besten Dank, auf Halt bin ich irgendwie nicht gekommen...

Luckie 10. Jun 2008 09:30

Re: Programmabsturz verursachen
 
Du kannst die Anwendung auch ganz normal beenden. Dazu braucht es kein Halt.

skyobserver 10. Jun 2008 09:36

Re: Programmabsturz verursachen
 
Ich wollte eine abnormale Programm-Beendung erreichen.
Der WatchDog wird beim Close deaktiviert, so daß man ein
Programm durchaus normal beenden kann, ohne das Alarm
ausgelöst wird...

:stupid: @Schuhmann: Darauf zu kommen war warscheinlich zu einfach für mich...

:gruebel: Wieso dauert es eigentlich so lange bis ich eine Antwort
bekomme, wenn ich Frage wie ich etwas richtig mache? :-D

gsh 10. Jun 2008 10:41

Re: Programmabsturz verursachen
 
Zitat:

Zitat von skyobserver
:gruebel: Wieso dauert es eigentlich so lange bis ich eine Antwort
bekomme, wenn ich Frage wie ich etwas richtig mache? :-D

weil es einfacher ist etwas falsch zu machen als richtig :wink:

SaFu 10. Jun 2008 10:50

Re: Programmabsturz verursachen
 
Ist das eigentlich das Gleiche

Form.close = halt

oder hat Halt irgenwelche vorteile

Wäre es gut

in seinem beendenbutton Close und Halt(0) zu schreiben???

Daniel Schuhmann 10. Jun 2008 11:03

Re: Programmabsturz verursachen
 
Nein, ist nicht das gleiche. Im Allgemeinen sollte man die Anwendung immer mit Close beenden. Halt schmeißt das Programm ohne Rücksicht auf freigegebene Resourcen raus.

DeddyH 10. Jun 2008 11:04

Re: Programmabsturz verursachen
 
Zitat:

Zitat von OH
Die Prozedur Halt löst einen Programmabbruch aus und gibt die Steuerung an das Betriebssystem zurück. Um eine visuelle Delphi-Anwendung normal zu beenden, rufen Sie Application.Terminate auf. Exitcode ist ein optionaler Ausdruck, der den Exit-Code des Programms angibt.

Bei halt() wird das Programm "brutal" abgebrochen, ohne etwaiige Aufräumarbeiten. Das Closen des Hauptformulars ist auf jeden Fall vorzuziehen.

rollstuhlfahrer 10. Jun 2008 14:55

Re: Programmabsturz verursachen
 
Zitat:

Zitat von DeddyH
...
Bei halt() wird das Programm "brutal" abgebrochen, ohne etwaiige Aufräumarbeiten. Das Closen des Hauptformulars ist auf jeden Fall vorzuziehen.

Genau das brutale rausschmeißen ist ja gewünscht. Schließt man das Hauptfenster kommen Aufräumarbeiten zu stande, die gar nicht kommen sollen, denn das hier herschende Motto ist: möglichst schnell und brutal beenden. Laut MSDN macht PostQuitMessage() auch schon aufräumarbeiten, indem es WM_CLOSE verschickt. Halt erscheint mir brutal genug, ansonsten schmeiß die Unit SysUtils raus und löse eine Assertion aus, die auf jeden Fall negativ verläuft (->Resultat: Laufzeitfehler 127, Programmabbruch)

Bernhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Seite 1 von 2  1 2      

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