Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Wie findet man am besten eine AV in der BPL (https://www.delphipraxis.net/115704-wie-findet-man-am-besten-eine-av-der-bpl.html)

cramer 16. Jun 2008 17:15


Wie findet man am besten eine AV in der BPL
 
Hallo,

ich habe eine eigene Komponentensammlung, die in der BDS2006 funktioniert auf D5 umgeschrieben, weil ich sie in D5 auch benötige und noch nicht alle Projekte auf BDS umgestellt habe.

Irgendwo ist aber ein Wurm drin, der mir folgende AV beim Einfügen des Controls in ein leeres Form bringt:
Zugriffsverletzung bei Adresse 10EF9F91 in Modul 'ixEditD5.bpl'. Lesen von Adresse 00000008.

Gibt es eine Möglichkeit die problemtische Stelle direkt zu finden oder nur über Trial and Error in dem man stückweise den Quellcode der Komponentensammlung kommentiert/auskommentiert ?

Gruß Uwe

mkinzler 16. Jun 2008 17:21

Re: Wie findet man am besten eine AV in der BPL
 
Ich würde die Bpl debuggen

cramer 16. Jun 2008 17:48

Re: Wie findet man am besten eine AV in der BPL
 
Danke für die schnelle Antwort, ich bräuchte aber etwas mehr input zum howTo.

shmia 16. Jun 2008 17:52

Re: Wie findet man am besten eine AV in der BPL
 
Es gibt da versch. Techniken; die Wichtigsten werden in Delphi Fehlersuche (Beitrag #10 ist die neueste Version)
beschrieben.

mkinzler 16. Jun 2008 17:54

Re: Wie findet man am besten eine AV in der BPL
 
Öffne das Package und wähle das Programm, welche diese verwendet in den Projektoptionen als Hostanwendung aus. Nun kannst du Breakpoints setzen und sie mit Debugger Starten.

cramer 16. Jun 2008 18:14

Re: Wie findet man am besten eine AV in der BPL
 
Also Hostanwendung habe ich unter den Optionen im geöffneten Package nicht gefunden.
Delphi Fehlersuche im Schnelldurchgang gelesen, zum Punkt AV ist sie, was das finden angeht, nicht sehr ergiebig.
Ich habe daher dem Form einen Button spendiert und dort den Breakpoint angelegt.

procedure TForm1.Button1Click(Sender: TObject);
var myLabel : tixlabel;
begin
myLabel := tixlabel.Create(Form1); // <- Breakpoint
end;

Dies funktioniert ohne Exception aber auch ohne Ergebnis, myLabel wird nicht angezeigt.

mkinzler 16. Jun 2008 18:21

Re: Wie findet man am besten eine AV in der BPL
 
Andersrum, die Anwendung, welche das Package verwendet muss die Hostanwendung sein.

hoika 16. Jun 2008 18:31

Re: Wie findet man am besten eine AV in der BPL
 
Hallo,

< Dies funktioniert ohne Exception aber auch ohne Ergebnis, myLabel wird nicht angezeigt. >

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  myLabel : tixlabel;
begin
  myLabel := tixlabel.Create(Form1); // <- Breakpoint
end;
2 Schwachpunkte

1. warum Form1 und nicht Self, Form1 könnte auch NIL sein
2. myLabel.Parent:= Self; // ohne das wird das Label nicht angezeigt.

Deine Schutzverletzung kommt wie es aussieht von einem NIL Access.


Heiko

cramer 16. Jun 2008 18:47

Re: Wie findet man am besten eine AV in der BPL
 
Nicht das wir aneinander vorbeireden, das Form1 mit dem Button ist eine Testanwendung, die die Komponente benutzt.

Nach der Änderung auf self als Owner ändert sich nichts

mylabel := tixlabel.Create(self);

Mit der zusätzlichen Zeile

mylabel.parent := self;

ist das Ergebnis 100%CPU in delphi32

mkinzler 16. Jun 2008 18:48

Re: Wie findet man am besten eine AV in der BPL
 
Setz doch mal einen Breakpoint im Package oder drücke am vorhandenen F7


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