Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fehler beim Prorammstart, wie debuggen ? (https://www.delphipraxis.net/210529-fehler-beim-prorammstart-wie-debuggen.html)

bernhard_LA 6. Mai 2022 17:01


Fehler beim Prorammstart, wie debuggen ?
 
mein Programm stützt direkt beim Programmstart ab
mein Form hat keine onCreate , onShow Funktionen
madexcept liefert diesen Dump -
ist madexcept die Ursache und nicht die Lösung ... erwarte andere AV im Code, der wird aber erst später aufgerufen




Delphi-Quellcode:
compiled with     : Delphi 10.4 Sydney
madExcept version : 5.1.0
callstack crc     : $171d1ad5, $9917af7d, $9917af7d
exception number  : 1
exception class   : EAccessViolation
exception message : Access violation at address 00000000004072A2 in module 'DebugVCL.TST.exe'. Read of address FFFFFFFFFFFFFFFF.

thread $490:
004072a2 +012 DebugVCL.TST.exe System          796   +4 Move56
00407f8f +0bf DebugVCL.TST.exe System         4524 +632 SysReallocMem
671ef8ba +37a madExcept64.dll madExceptDbg   1978  +73 ReallocMemCallback
00409507 +017 DebugVCL.TST.exe System         4913   +5 @ReallocMem
00417637 +237 DebugVCL.TST.exe System        36568  +70 DynArraySetLength
0041788c +02c DebugVCL.TST.exe System        36650   +9 @DynArraySetLength
004aa33b +03b DebugVCL.TST.exe System.Classes 5205   +5 TList.SetCapacity
004a9f4b +06b DebugVCL.TST.exe System.Classes 5041   +1 TList.Grow
004a9bbd +01d DebugVCL.TST.exe System.Classes 4964   +3 TList.Add
004aafea +04a DebugVCL.TST.exe System.Classes 5456   +5 TThreadList.Add
005ee588 +118 DebugVCL.TST.exe Vcl.Graphics   3780  +26 TCanvas.Create
00646c89 +049 DebugVCL.TST.exe Vcl.Controls  14364   +2 TCustomControl.Create
006b77ab +03b DebugVCL.TST.exe Vcl.ExtCtrls   3200   +1 TCustomPanel.Create
004bafda +10a DebugVCL.TST.exe System.Classes 11049  +15 CreateComponent
004bb330 +0e0 DebugVCL.TST.exe System.Classes 11095  +11 TReader.ReadComponent
004bb7b7 +0a7 DebugVCL.TST.exe System.Classes 11161   +9 TReader.ReadDataInner
004bb6be +03e DebugVCL.TST.exe System.Classes 11140   +5 TReader.ReadData
004ca96d +00d DebugVCL.TST.exe System.Classes 17026   +1 TComponent.ReadState
00631e03 +043 DebugVCL.TST.exe Vcl.Controls   5744   +3 TControl.ReadState
00638d16 +026 DebugVCL.TST.exe Vcl.Controls   8799   +3 TWinControl.ReadState
0076a73f +04f DebugVCL.TST.exe Vcl.Forms      4216   +7 TCustomForm.ReadState
004bccc1 +371 DebugVCL.TST.exe System.Classes 11575  +37 TReader.ReadRootComponent
004b42d9 +039 DebugVCL.TST.exe System.Classes 9096   +3 TStream.ReadComponent
004a056f +08f DebugVCL.TST.exe System.Classes 4374   +7 InternalReadComponentRes
004a96d6 +086 DebugVCL.TST.exe System.Classes 4648   +4 InitComponent
004a9785 +065 DebugVCL.TST.exe System.Classes 4660   +6 InitInheritedComponent
0076949c +12c DebugVCL.TST.exe Vcl.Forms      3838  +18 TCustomForm.Create
0077a6f6 +086 DebugVCL.TST.exe Vcl.Forms     11147  +13 TApplication.CreateForm
00cbf407 +057 DebugVCL.TST.exe DebugVCL.TST     16   +3 initialization
7ffb0ada +00e KERNEL32.DLL                              BaseThreadInitThunk
7ffb0b46 +01b ntdll.dll                                 RtlUserThreadStart

himitsu 6. Mai 2022 17:13

AW: Fehler beim Prorammstart, wie debuggen ?
 
Du siehst ja, wo es knallt, beim Laden der DFM.

also Erstellen einer Komponente, bzw. zuweisen eines Property.


Du kannst also ganz einfach die DFM ausmisten (im Formdesginer oder im DFM-Text so lange was rauswerfen, bis es nicht mehr knallt)

Oder man hängt sich an die Fehlerbehandlung des TReader.

Andreas13 6. Mai 2022 17:24

AW: Fehler beim Prorammstart, wie debuggen ?
 
Zitat:

Zitat von himitsu (Beitrag 1505551)
Du siehst ja, wo es knallt, beim Laden der DFM.
also erstellen einer Komponente, bzw. zuweisen eines Property...

Eine dumme Frage, Himitsu: Woran siehst Du, daß der Fehler beim Laden der DFM passiert.
Danke & Gruß, Andreas

himitsu 6. Mai 2022 17:46

AW: Fehler beim Prorammstart, wie debuggen ?
 
TReader :zwinker:

TReader und TWriter sind die Komponenten, welche das Binärformat der DFM laden, bzw. speichern.



OnError
https://stackoverflow.com/questions/...d-from-the-dfm
Der FormDesigner nutzt das auch, um beim Öffnen von Units Fehler in der DFM zu behandeln, und z.B. defekte Teile rauszuwerfen.

Andreas13 6. Mai 2022 17:50

AW: Fehler beim Prorammstart, wie debuggen ?
 
@Himitsu:
Das ist der Unterschied zwischen dem Amateur und dem Profi... :thumb:
Danke!
Grüße, Andreas

bernhard_LA 6. Mai 2022 18:03

AW: Fehler beim Prorammstart, wie debuggen ?
 
aktuell läuft mein Projekt wieder.

habe die *.dproj gelöscht und dann das Projekt neu geladen, neue Parameter , Pfade gesetzt etc .....

bernhard_LA 6. Mai 2022 18:14

AW: Fehler beim Prorammstart, wie debuggen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
(offtopic)
PS: TReader ist nicht mein Code , genauso wie die Delphi IDE,
was könnte ich bei diesem Fehler machen ... bin hier ziemlich hilflos ?

himitsu 6. Mai 2022 20:12

AW: Fehler beim Prorammstart, wie debuggen ?
 
Der Reader hat bestimmt keinen Fehler.
Der funktioniert seit knapp 30 Jahren unverändert gut. :stupid:

Packages sind ein Problem für sich.
Du mußt alles selber freigeben, bevor die Anwendung beendet wird.

Die VCL-Packages werden als Letzte freigegeben, nachdem alle deine Packages bereits weg sind.
Existiert da noch eine Form (sieht bei dir so aus) oder Komponente, welche Code aus bereits entladenen Packages nutzen wollten, dann knallt es, da der Code ja schon weg ist.
Noch vorhandene Forms werden aber erst im Finalization der VCL-BPL freigegeben, da wo Application und Screen verschwinden wollen.

hoika 9. Mai 2022 20:16

AW: Fehler beim Prorammstart, wie debuggen ?
 
Hallo,
Interfaces schießen gern mal Code weg.

Benutzt Du Interfaces?


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