Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programmbeendigung debuggen (https://www.delphipraxis.net/127933-programmbeendigung-debuggen.html)

texmurphy901 21. Jan 2009 15:11


Programmbeendigung debuggen
 
Hallo allerseits,

ich habe da ein winziges Programm geschrieben, welches ein par Konfigurationen auf einem lokalen Server ändert.
Beende ich nun das Programm über das 'X' im Programmfenster (weiß nicht wie ich es anders beschreiben soll :-) )so bekomme ich eine Zugriffsverletzung.

Nun möchte ich natürlcih heraus bekommen, wo die Zugriffsverletzung her kommt. Da ich keinerlei Code in onClose und onDestroy habe, habe ich keinerlei Code auf den ich einen Breakpoint setzen kann um das 'Aufräumen' zu tracen um zu sehen, ob vielleicht irgendwo ein Objekt entfernt wird, was es nicht gibt.

Also habe ich meinen eigenen "Ende"-Button eingebaut und mit Application.terminate versehen. Setze ich nun einen Breakpoint auf den Befehl, so kommt die Zugriffsverletzung sofort wenn ich das Terminate "trace"(F7). Da im Programmcode keinerlei Befehle mehr kommen, weiß ich nun nicht mehr weiter. Daher meine Frage, ob mir irgendjemand sagen kann, wie ich die Zugriffsverletzung ermitteln kann oder irgendeine Möglichkeit, wie ich das Programmende debuggen kann?


Kurze Zusammenfassung:
* verwende nur VCL-Komponenten und Delphi-Bibliotheken
* erzeuge keine eigenen Objekte und lege keinerlei Objekte mit .Create() an
* es werden im Code keine Objekte mit .Free oder .Destroy entfernt
* Programm besteht nur aus 2 Fenstern

Nun das wizige zum Schluss: unverändert lief das Programm einige Zeit OHNe Zugriffsverletzung und dann habe ich es einmal neu kompiliert (OHNE Code geändert zu haben) und jetzt kommt die Zugriffsverletzung. Ich wollte doch nur eine neue Versionsnummer :-( ......

Danke schon mal alle Helfenden!
Gruß
Murphy

nahpets 21. Jan 2009 15:28

Re: Programmbeendigung debuggen
 
Hallo,

die Fehleradresse hast Du aber?
Wenn ja:
Breakpunkt irgendwo im Programm setzen (z. B. in der DPR vor das Application.Run.
Wenn der Debugger nun dort steht: In der IDE im Menü Suchen auch Laufzeitfehler suchen klicken und dann die Fehleradresse eingeben. Du solltest dann an die Stelle kommen, an der der Fehler auftritt. Eventuell reicht Dir die Info ja dann schon, um das Problem zu erkennen, ansonsten einen Breakpunkt kurz vor die so gefundene Stelle setzen und dann im Debugger F9. Anschließend das Programm auf die "fehlerhafte" Art und Weise beenden. Du solltest dann (mit ein bisserl Glück) bei Deinem soeben gesetzten Breakpoint landen und kannst dann von dort aus weiterforschen.

sirius 21. Jan 2009 15:30

Re: Programmbeendigung debuggen
 
Zitat:

Nun das wizige zum Schluss: unverändert lief das Programm einige Zeit OHNe Zugriffsverletzung und dann habe ich es einmal neu kompiliert (OHNE Code geändert zu haben) und jetzt kommt die Zugriffsverletzung. Ich wollte doch nur eine neue Versionsnummer ......
Ach so wird das gemacht, wenn vom Support die Nachricht kommt: "Wir haben alle Fehler beseitigt. Sie bekommen gleich eine neue Version." :mrgreen:

Du kannst da hinein debuggen indem du in den Projekt-Optionen die Debug-DCUs "anmachst" und dich dann in deiner dpr-Datei auf das "end." mit einem Breakpoint setzt. ->F7;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.

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