![]() |
AW: Sporadische Zugriffsverletzungen
Was Allgemeines. So sporadische Zugriffsverletzungen deuten drauf hin, dass was mit dem Speicher nicht stimmt. Beispielsweise wurde ein Objekt freigegeben, auf das dann aber noch zugegriffen wird. Manchmal hat man Glück und die Speicherstelle enthält noch gültige Daten, aber manchmal eben auch nicht und dann kommt es zu einer Zugriffsverletzung. Also untersuche dein Code mal auf solche Situationen hin.
|
AW: Sporadische Zugriffsverletzungen
Jetzt fehlt noch der Hinweis auf Bereichsprüfung und Konsorten und die Basis für die Fehlersuche ist gelegt.
Gruß K-H |
AW: Sporadische Zugriffsverletzungen
Zitat:
In einer solchen Situation kann man eigentlich nur mit FastMM im "FullDebug"-Modus einem solchen Problem auf die Spur kommen. Da gibt es die Möglichkeit den Speicher freigegebener Objekte mit einem Bit-Muster überschreiben zu lassen, was dann in dieser Situation das Auffinden des Problems enorm erleichtert. Da knallt es nämlich direkt beim nächsten Zugriff und man sieht im Debugger sofort wo der ungültige Zugriff erfolgte. |
AW: Sporadische Zugriffsverletzungen
Danke für eure zahlreichen Hinweise und Lösungsvorschläge. Ich werde mal versuchen damit dem Fehler auf die Spur zu kommen.
Bis hier hin erst mal vielen Dank. |
AW: Sporadische Zugriffsverletzungen
Zitat:
|
AW: Sporadische Zugriffsverletzungen
Mit FastMM bekomme ich direkt beim Editieren Fehler mit Stacktrace vom Erstellen und Freigeben des fehlerhaften Objekt.
|
AW: Sporadische Zugriffsverletzungen
Im OnClick-Event der Speedbutton wird indirekt SetView aufgerufen.
Darin werden alle Speedbutton freigegeben. Nachdem dieses OnClick-Event abgearbeitet ist, kehrt das Programm zum nun nicht mehr existierenden Speedbutton zurück. Die Methode, welche das OnClick-Event aufgerufen hat, wird zuende geführt. Der Zeiger Self ist ungültig und verweist auf Speicher der vorher mit den Daten des Speedbutton belegt war. Dort können jetzt ganz andere Daten liegen, die bei Schreibzugriffen beschädigt werden. Lösung 1: Man verzichtet auf das Erzeugen und Freigeben der Buttons und macht diese nur sichtbar oder unsichtbar. Lösung 2: Im OnClick-Event wird nur eine Nachricht an das Formular gepostet(PostMessage) und die Methode sofort beendet. Die eigentliche Verarbeitung erfogt dann als Reaktion auf den Empfang der Nachricht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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 by Thomas Breitkreuz