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 Hilfe mit Access Violation (https://www.delphipraxis.net/113493-hilfe-mit-access-violation.html)

okoeller 8. Mai 2008 16:22


Hilfe mit Access Violation
 
Hallo

in einem anderen Forumsbeitrag von mirage228 habe ich folgendes gelesen:
Zitat:

Also die Fehlermeldung deutet auf eine Nullzeigerdereferenzierung hin, also irgendwo im Code versuchst du auf eine Variable zuzugreifen, die zu diesem Zeitpunkt = nil ist.
Wie kann ich beim Auftreten einer AV nun feststellen wer der Verursacher ist?
Das Programm an dem ich arbeite ist kein Dreizeiler, sondern hat einige 10.000 Zeilen mit mehr als 100 Klassen(verteilt auf 8 Packages).
In den letzten 2 Tagen habe ich versucht mit F7 und F8 durch den code zu gehen und den Fehler dingfest zu machen.
Bisher leider ohne Erfolg, da die Fehlermeldung erst mit dem Beenden der Application angezeigt wird.
Es scheint sich aber auf ein Package und den Aufruf eines bestimmten Fensters einschränken zu lassen.
Dieses Fenster besitzt mehrere in sich verschachtelte Frames von denen einige dynamisch erzeugt werden.

Kann hier jemand helfen?????

Vielen Dank
Oliver

Mikender 8. Mai 2008 16:39

Re: Hilfe mit Access Violation
 
Wie wärs mit Nach und nach Teile des Codes zu Kommentalieren
((meine zum Kommentar machen ( mit Strg + #)) Oder wie nennt man das ??)

Aber sonst fält mir dazu nix ein :wall: :wall: :wall:

Dezipaitor 8. Mai 2008 16:51

Re: Hilfe mit Access Violation
 
Nimm FastMM oder anderes Überwachungstool. Das nennt dir dann auch die Zeile.

FAlter 8. Mai 2008 16:58

Re: Hilfe mit Access Violation
 
Hi,

Breakpoint weit vor der stelle setzen und Variablen weit vorher kontrollieren, ob alles stimmt. So findet man es am Besten, denn eine AV tritt meistens an ganz anderer Stelle auf als wo man den Fehler gemacht hat. Also Breakpoint + durchsteppen.

Mfg
FAlter

bluesbear 8. Mai 2008 18:30

Re: Hilfe mit Access Violation
 
Das callstack-Fenster ist oft sehr hilfreich, um herauszufinden, wo man den Breakpoint setzen, und das Effsiebenen beginnen sollte.

okoeller 8. Mai 2008 19:14

Re: Hilfe mit Access Violation
 
Hallo Delphianer,

vielen Dank für Eure Tips.
Mal sehen was mich weiterbringt.

Was bedeuten bei Debuggen eigentlich die Marienkäfer an den Tabs der einzelnen Units?
Hat das noch mehr zu sagen als das sich der Debugger gerade in der mit Marienkäfer markierten Unit befindet.
Ich dachte zunächst das hier ein Fehler aufgetreten ist, hab aber dann in den Videos mit Nick Hodges gesehen das in seinen Beispielen auch die Marienkäfer zu sehen waren.


@ FAlter: Genau das hab ich die letzten beiden Tage versucht. Meist ist es aber so das die Variablen nichts anzeigen, weil sie wegoptimiert werden.


Oliver

Luckie 8. Mai 2008 19:19

Re: Hilfe mit Access Violation
 
Zitat:

Zitat von okoeller
@ FAlter: Genau das hab ich die letzten beiden Tage versucht. Meist ist es aber so das die Variablen nichts anzeigen, weil sie wegoptimiert werden.

Dann sind sie überflüssig.

Hast du schon alle Warnungen und Hinweise des Kompilers beseitigt?

FAlter 8. Mai 2008 19:21

Re: Hilfe mit Access Violation
 
Hi,

Zitat:

Zitat von okoeller
Meist ist es aber so das die Variablen nichts anzeigen, weil sie wegoptimiert werden.

Da hilft vorübergehendes Deaktivieren der Optimierung (Projektoptionen oder {$O-}). Wobei ich so etwas noch nie hatte. Wenn auf Variablen nicht zugegriffen werden konnte, gab es entweder ein Hinweis (zugewisener Wert nie genutzt/Variable deklariert, aber nicht verwendet) , oder man konnte vor dem ersten/nach dem letzten Auftauchen der Variable nicht zugreifen. Zwischendurch eigentlich immer.

Das sollten Marienkäfer sein? Ich dachte immer, das sind hässliche rote Wanzen. Marienkäfer sind doch viel schöner. :gruebel:

Mfg
FAlter

okoeller 8. Mai 2008 20:16

Re: Hilfe mit Access Violation
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Dezipaitor,

Zitat:

Zitat von Dezipaitor
Nimm FastMM oder anderes Überwachungstool. Das nennt dir dann auch die Zeile.

Also ich hab mir den FastMM runtergeladen und installiert, konnte mein Programm auch compilieren. Wie macht sich denn jetzt der FastMM genau bemerkbar, im Ereignisprotokoll??
Nachdem der Fehler aufgetreten ist wird mir jetzt die CPU Ansicht angezeigt, mit der ich nicht wirklich was anfangen kann!

Hier ein Ausschnitt aus dem Ereignisprotokoll:

....
1 Modul entladen: PluginManager.bpl. Prozess MdiApp.exe (1224)
2 Erste Gelegenheit für Exception bei $7C812A5B. Exception-Klasse EAccessViolation mit
Meldung 'Access violation at address 01171658. Read of address 01171658'. Prozess
MdiApp.exe (1224)


Was sagt mir denn jetzt die 1224 ??
Anbei noch ein Bild (Bild01.jpg)nach Beenden des Programms.

Oliver

OldGrumpy 9. Mai 2008 00:41

Re: Hilfe mit Access Violation
 
Also dem Screenshot nach rummst es vermutlich beim oder nach dem Entladen des PluginManager.bpl - wenn dort dann die Stelle klar ist an der es rummst, kann man im Projekt schauen, wo überall daran herummanipuliert wird, in vielen Fällen kommt man so zum Ziel. Übler wäre es natürlich, wenn Dein Fehler gar nicht direkt im Objekthandling zu suchen ist sondern durch überschriebenen Speicher o.ä. zustande kommt. Das lässt sich aus der Ferne aber nicht sagen und meine Glaskugel ist gerade beim Pfandleiher ;)

Gibts im PluginManager ein Finalize? Wenn ja, setz da mal einen Breakpoint direkt an den Anfang. Kommt die AV vor dem Breakpoint oder erst danach?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr.
Seite 1 von 2  1 2      

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