Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   access violation beim hinzufügen eines Elements in eine Liste (https://www.delphipraxis.net/209682-access-violation-beim-hinzufuegen-eines-elements-eine-liste.html)

bernhard_LA 8. Jan 2022 23:18

access violation beim hinzufügen eines Elements in eine Liste
 
der aktuelle Fehler in unserer Anwendung tritt beim hinzufügen einen Elements in eine Objectliste auf,
Madshi maxexcept hüpft beim Debuggen direkt zu dieser Codezeile in system.pas



Delphi-Quellcode:
procedure DynArraySetLength(var a: Pointer; typeInfo: Pointer; dimCnt: NativeInt; lengthVec: PNativeint);
  .....
  // Calculate the needed size of the heap object
  t := PDynArrayTypeInfo( PByte(typeInfo) + PDynArrayTypeInfo(typeInfo).name );
  ....

mein Code Block zum Einfügen eines Elements in die Liste ist schon einige Jahre alt und hat bisher ohne Probleme funktioniert.
Wie kann ich hier weiter debuggen ??

himitsu 9. Jan 2022 04:37

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Welcher Codeblock?

TurboMagic 9. Jan 2022 08:58

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Und was hat sich seit dem in deinem Programm geändert?
Andere Delphi Version vielleicht?
Aber wie schon geschrieben: ohnew etwas Code wie du das aufrufst
kommen wir nicht weiter.

Ich gehe davon aus, dass der Fehler reproduzierbar jedes Mal auftritt
und nicht sporadisch?

Uwe Raabe 9. Jan 2022 09:28

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Zitat:

Zitat von bernhard_LA (Beitrag 1500313)
Wie kann ich hier weiter debuggen ??

Ich würde sagen: gar nicht! Wenn du an der Stelle ankommst, hast du den Fehler vermutlich schon übersehen.

bernhard_LA 9. Jan 2022 12:37

AW: access violation beim hinzufügen eines Elements in eine Liste
 
an anderen Stellen, Routinen wurde (natürlich) schon was geändert, aber alle Änderunmgen sehen harmlos aus & die Access Violation findet halt in einem alten Code Fragment ohne bezug zu den anderen Klassen, Routinen ... statt.
Wie finde ich jetzt die Stelle mit dem Fehler ??


https://www.thoughtco.com/understand...esult%20value.


was sind den typische Konstellationen welche zu einem Heap fehler führen ?

Uwe Raabe 9. Jan 2022 13:45

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Zitat:

Zitat von bernhard_LA (Beitrag 1500338)
die Access Violation findet halt in einem alten Code Fragment ohne bezug zu den anderen Klassen, Routinen ... statt.
Wie finde ich jetzt die Stelle mit dem Fehler ??

Und du erwartest darauf wirklich eine Antwort, ohne dass wir den betreffenden Code zu sehen bekommen?

bernhard_LA 9. Jan 2022 17:26

AW: access violation beim hinzufügen eines Elements in eine Liste
 
wie finde ich heraus welche Variable unter 00000000004177AC gespeichert ist, welche Tool kann mir beim Debuggen weiterhelfen ?


Delphi-Quellcode:
Message: Access violation at address 00000000004177AC in module 'TESTS_VCLGUIAPP.exe'. Read of address 0000000000000001

himitsu 9. Jan 2022 17:33

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Modul-Liste (DLLs) oder in der Assembler-Ansicht hochscrollen

da siehst dann in welchem Programmteil du bist


sind Debuginfos oder Externals-Definitionen vorhanden, siehst'e auch noch die Funktion und vielleicht Codezeile.

peterbelow 10. Jan 2022 14:11

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Zitat:

Zitat von bernhard_LA (Beitrag 1500313)
der aktuelle Fehler in unserer Anwendung tritt beim hinzufügen einen Elements in eine Objectliste auf,
Madshi maxexcept hüpft beim Debuggen direkt zu dieser Codezeile in system.pas



Delphi-Quellcode:
procedure DynArraySetLength(var a: Pointer; typeInfo: Pointer; dimCnt: NativeInt; lengthVec: PNativeint);
  .....
  // Calculate the needed size of the heap object
  t := PDynArrayTypeInfo( PByte(typeInfo) + PDynArrayTypeInfo(typeInfo).name );
  ....

Hast Du validiert dass das die hinzugefügte Objektreferenz nicht nil ist?

Delphi-Quellcode:
Message: Access violation at address 00000000004177AC in module 'TESTS_VCLGUIAPP.exe'. Read of address 0000000000000001
sieht eindeutig nach einen Zugriff auf einen Speicherblock (z. B. ein Objekt) über einen nil pointer aus.

Blup 10. Jan 2022 14:16

AW: access violation beim hinzufügen eines Elements in eine Liste
 
Es besteht die Wahrscheinlichkeit das die Objektliste bereits freigegeben ist und die Variable weiterhin auf den freigegebenen Speicherbereich zeigt. Solche Fehler führen zur Laufzeit nicht in jedem Fall direkt zur Zugriffsverletzung. Nur wenn der eingebaute Speichermanager den für das Objekt reservierten Speicher auch bereits an das Betriebsystem zurückgegeben hat. Dashalb kann eine Änderung an einem ganz anderen Programmteil plötzlich den Fehler zu Tage treten lassen.


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