Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Zugriffsverletzung", wie Debuggen (https://www.delphipraxis.net/129019-zugriffsverletzung-wie-debuggen.html)

yx-man 11. Feb 2009 07:27


"Zugriffsverletzung", wie Debuggen
 
Hallo zusammen,

ich habe eine "Zugriffsverletzung bei Adresse 0000000". Da dieser Fehler nicht in meiner IDE kommt, würde ich gern zu Laufzeit genaueres darüber erfahren, z.B. welche Variable nicht instanziert ist.

Kann man das Programm irgendwie compilieren, dass ich zur Laufzeit mehr Informationen bekomme?

Danke für Eure Mithilfe

nuclearping 11. Feb 2009 07:33

Re: "Zugriffsverletzung", wie Debuggen
 
"Lesen von Adresse 0000..." deutet auf einen nicht-initialisierten Speicherbereich hin. Entweder greifst du auf etwas zu, was du schon freigegeben oder noch nicht initialisiert hast.

Wieso werden die Exceptions in der IDE nicht angezeigt? Hast du das vielleicht deaktiviert?

Ansonsten mal von Madshi madExcept anschauen oder den Execption Handler, der bei der JVCL von JEDI dabei ist.

Über Projekteinstellungen kannst du auch festlegen, ob Delphi eine Map-Datei erzeugt, ob es Debug-Infos in die Anwendung compilen soll, usw.

gsh 11. Feb 2009 07:48

Re: "Zugriffsverletzung", wie Debuggen
 
start dein programm mit F8 und drück F8 so oft bis das Problem auftretet.

[glasskugel funktion]
Hast du vielleicht irgendwo folgendes geschrieben: Variable := Variable.Create;
Richtig muss da nämlich folgendes stehen: Variable := TVariable.Create;
Passiert mir manchmal :-D
[/glasskugel funktion]

yx-man 11. Feb 2009 07:55

Re: "Zugriffsverletzung", wie Debuggen
 
Hallo zusammen,

nochmals mein Problem: Es tritt auf einen Rechner auf, wo nur das Programm läuft. Da gibt es keine IDE oder F8 (damit wäre das alles ja ziemlich einfach). Deshalb benötige ich ja Informationen aus dem compilierten Programm.

Gruß an Alle

DMW 11. Feb 2009 08:07

Re: "Zugriffsverletzung", wie Debuggen
 
Zitat:

Zitat von yx-man
nochmals mein Problem: Es tritt auf einen Rechner auf, wo nur das Programm läuft. Da gibt es keine IDE oder F8 (damit wäre das alles ja ziemlich einfach).

Verwende doch den Remote-Debugger.

nuclearping 11. Feb 2009 08:14

Re: "Zugriffsverletzung", wie Debuggen
 
Zitat:

Zitat von yx-man
Hallo zusammen,

nochmals mein Problem: Es tritt auf einen Rechner auf, wo nur das Programm läuft. Da gibt es keine IDE oder F8 (damit wäre das alles ja ziemlich einfach). Deshalb benötige ich ja Informationen aus dem compilierten Programm.

Gruß an Alle

Wie schon erwähnt: Wenn du genauere Fehlerauskünfte willst, schau dir madExcept oder den JVCL Exception-Handler an.

Tyrael Y. 11. Feb 2009 08:46

Re: "Zugriffsverletzung", wie Debuggen
 
Logging Tools sind ein sehr hilfreiches Mittel um Fehler zu orten.
Wenn ein großes Programm schon "steht" ist es natürlich im nachhinein eine groooooße Arbeit das überall einzuarbeiten. Bei neuen Modulen oder Programmen auf jeden Fall sehr empfehlenswert.

Ich mag nicht mehr ohne Logging Tools arbeiten.

Nicht Fehler suchen, sondern Fehler finden heißt dann die Devise. ;)

Ich habe schon mit beiden unten aufgeführten Tools gearbeitet, beide sind gut.
Im Moment in Einsatz habe ich SmartInspect.

SmartInspect

CodeSite

yx-man 11. Feb 2009 16:57

Re: "Zugriffsverletzung", wie Debuggen
 
Hallo,

ich habe jetzt versucht, madExcept zu installieren, aber meine Turbo Delphi will das nicht zulassen.
Meldung: "Die Anwendung konnte nicht gestartet werden, weil madBasic_.bpl nicht gefunden wurde."
Was könnte das Problem sein ?

Gruß und Danke

yx-man 13. Feb 2009 08:53

Re: "Zugriffsverletzung", wie Debuggen
 
Da madExcept mit Turbo Delphi ja scheinbar nicht geht, würde ich gern Application.OnException nutzen und dort möglichst viele Informtionen ausgeben. Kann man irgendwo die Methode und die Klasse/Instanz auslesen, wo der Abbruch passiert. An den Variablennamen wage ich nicht zu denken, denn den gibt es bestimmt nirgendwo.
Welche Informationen könnte ich noch ausgeben.

Danke yx-man

yx-man 15. Feb 2009 10:35

Re: "Zugriffsverletzung", wie Debuggen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Da niemand mir eine Turbo Delphi Lösung vorschlagen konnte, denke ich, es ist für alle interessant, wenn ich jetzt meine vorstelle, die ich im regen Mail-verkehr mit madshi gefunden habe:

Man braucht erstmal eine mes-Datei(siehe Anhang).Die konnte ich mit Hilfe von Delphi 2005 erzeugen. Danach das madCollection-Verzeichnis kopieren und madExcept deinstallierenen, sonst kommen die Komponentenfehler bei Turbo Delhpi. Danach startet man Turbo Delphi, nimmt in die uses des Projects madExcept und madLinkDisAsm (bei madexcept 2) auf, nimmt in den Unit-Pfad das kopierte Verzeichnis mit auf und kompiliert alles durch. Jetzt muß man manuell noch die Verarbeitung abschließen, indem man "madExceptPatch DeinProjekt.exe" aufruft. Danach kann man das Projekt aushalb der IDE aufrufen und madExcept tut seine Arbeit.

Ich habe mich dann als Exception-Log-und Abfangtool doch für etwas anderes entschieden, nämlich Exceptlog. Das erzeugt mir nur eine Datei mit den Exceptions + Zeilenummer des Abbruch, was ich ausreichend finde.

Gruß und Danke an alle
Yx-man


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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