Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Access Violation ( kann nicht herausfinden an welcher stelle (https://www.delphipraxis.net/82354-access-violation-kann-nicht-herausfinden-welcher-stelle.html)

jmd anders 11. Dez 2006 19:55


Access Violation ( kann nicht herausfinden an welcher stelle
 
Hallo zusammen, ich hab ein programm geschrieben in dem nach einiger Zeit(mal dauerts länger >4h eine Access Violation auftritt, wenn ich dann auf break klicke, kriege ich nur das cpu fenster mit assembler anweisungen, ich kann dann noch zum delphi code switchen, da bleibt er aber mit dem roten balken an unterschiedlichen stellen stehen(also mal an dieser stelle, mal an einer anderen).
auf dem aufruf stack liegt dann als letzte anweisung sysallocem oder realloc mem.

es scheint, als scheine der fehler schneller zu kommen, wenn die systemauslastung größer ist, aber das ist nur eine waage vermutung.

daher würde ich gerne mal wissen, was eine access violation im eigentlich ist und wo sie am häufigsten vorkommt.

und wie kann ich vielleicht was anfangen, was in dem cpu fenster steht, oder wie kann ich an die stelle kommen an der in meinem code was falsch ist.

3_of_8 11. Dez 2006 20:00

Re: Access Violation ( kann nicht herausfinden an welcher st
 
Eine AccessViolation ist eine Zugriffsverletzung, passiert dann, wenn du auf nicht zugewiesenen Speicher/nicht erzeugte Klassen zugreifen willst.

Eine AV ist der böseste Fehler, den es überhaupt gibt.

Das CPU-Fenster bringt dabei in 99% der Fälle gar nix, am besten du versuchst eher, den Fehler mit Breakpoints einzugrenzen.

Bernhard Geyer 11. Dez 2006 20:04

Re: Access Violation ( kann nicht herausfinden an welcher st
 
Compiliere auch mal mit Debug-DCU's. Evtl bekommst Du dann Code zu Gesicht.

Sunlight7 11. Dez 2006 20:11

Re: Access Violation ( kann nicht herausfinden an welcher st
 
Zitat:

Zitat von jmd anders
... wenn ich dann auf break klicke.

Hast Du die Option "Bei Exceptions Anhalten" aktiviert (Kann in Deiner Delphi etwas anders heissen)?

Zitat:

Zitat von 3_of_8
Eine AV ist der böseste Fehler, den es überhaupt gibt.

Hmm, ich find' ne GP Fault viel böser :mrgreen:

oki 11. Dez 2006 20:16

Re: Access Violation ( kann nicht herausfinden an welcher st
 
Hi,

suchebesonders an den Stellen wo du mit eigenen Zeigern (Pointer) arbeitest. Oft werden aus C-dll's Strukturen als Zeiger übergeben oder müssen an diese übergeben werden. Ich hatte auch schon mal so blöde Fehler. Da hat eine Dll einen Zeiger auf eine Struktur erwartet und ich hatte den Record nicht richtig definiert.

Gruß Oki

jmd anders 11. Dez 2006 22:08

Re: Access Violation ( kann nicht herausfinden an welcher st
 
mit den debug dcus, bleibt der debugger an der stelle in getmem.inc stehen:
{Unlock the block type}
mov TSmallBlockType[ebx].BlockTypeLocked, al

3_of_8 11. Dez 2006 22:11

Re: Access Violation ( kann nicht herausfinden an welcher st
 
Zitat:

Zitat von Sunlight7
Hmm, ich find' ne GP Fault viel böser :mrgreen:

Damit meinte ich Debuggbarkeit in Relation zur Häufigkeit. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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-2025 by Thomas Breitkreuz