AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception in Destroy

Ein Thema von Gruber_Hans_12345 · begonnen am 14. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Seite 2 von 3     12 3      
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Exception in Destroy

  Alt 14. Jan 2008, 20:14
Zitat von mkinzler:
Dann setzte doch den Breakpoint dort.
und wo?

ich weiss ja nicht, bei welchen Free der Fehler auftritt, wenn ich das wüsste, wäre der Bug schon geschichte

der fehler tritt irgendwo innerhalb von TForm.Destroy auf, und dort werden hunderte komponenten rekursiv freigegeben, eben wie die als Controls im Formular und deren Childkontrols erzeugt worden sind.

Daher wüßte ich nicht, wo ich einen Breakpoint setzen sollte ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Exception in Destroy

  Alt 14. Jan 2008, 20:16
und wo? TForm.Destroy oder schau mal, wo du manuell freigibst
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Exception in Destroy

  Alt 14. Jan 2008, 20:29
Zitat von mkinzler:
und wo? TForm.Destroy oder schau mal, wo du manuell freigibst
ja, im TForm.Destroy ist der Fehler, da wird irgendwo eine Komponente von mir freigegeben, die einen Fehler hat.
und diese Komponente suche ich nun ...

da werden leider zig verschiedene komponenten verwendet in diesem form, und jede ist der potentielle bug verursacher.

und meine frage ist nun, gibt es unter D2007 so etwas ähnliches wie memcheck, das mir alle erzeugten Objekte merkt, und bei einem erneuten versuch diese freizugeben einen logeintrag erzeugt, mit dem Callstack wie dieses Objekt ERZEUGT wurde
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Exception in Destroy

  Alt 14. Jan 2008, 20:38
madExcept. Aber du kannst ja an der Stelle, wo der Fehler auftritt einen Breakpoint setzten und sehen welches Objekt es ist. Oder halt im Code suchen, welche Objekte du manuell freigibst.
Markus Kinzler
  Mit Zitat antworten Zitat
Andy090778

Registriert seit: 14. Mai 2006
23 Beiträge
 
Delphi 5 Standard
 
#15

Re: Exception in Destroy

  Alt 14. Jan 2008, 20:50
omg, kann ja wohl nicht so schwer sein, eine paar haltepunkte sinnvoll zu setzen.

Sei froh, dass Du keine µ-Prozessoren einer Hardware programmierst. Da geht das mit dem Debuggen nämlich nicht so einfach...
Andreas
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Exception in Destroy

  Alt 15. Jan 2008, 13:10
Zitat von mkinzler:
madExcept. Aber du kannst ja an der Stelle, wo der Fehler auftritt einen Breakpoint setzten und sehen welches Objekt es ist. Oder halt im Code suchen, welche Objekte du manuell freigibst.
Ja, wenn es so einfach wäre, ich sehe leider nicht, wo die Exception auftritt ...

bekomme nur eine Exception "Ungültige Zeigeroperation"
nach dem Anhalten ist der Cursor nicht in einer Code zeile, und der Stack zeigt an :

kernel32.RaiseException
HookedRaiseException
TObject.FreeInstance
TObject.Free
TComponent.DestroyComponents


und das wars

und wenn ich einen Breakpoint in die FreeInstance stekce, dann muß ich mal so 1000 mal auf F8 klicken, da es sich hier um ein Projekt handelt, und da sich der Fehler auch in eine der ca 1500 units verstecken kann sehe ich es mit dem Breakpoint etwas ungünstig.

und wenn ich nach der Exception mit F7 weitergehe, dann bin ich sofort im TCustomForm.Destroy

werde mir mal wieder das madExecept angucken (ob es diesen Fehler abfangen kann ...)

Zitat von Andy090778:
omg, kann ja wohl nicht so schwer sein, eine paar haltepunkte sinnvoll zu setzen.

Sei froh, dass Du keine µ-Prozessoren einer Hardware programmierst. Da geht das mit dem Debuggen nämlich nicht so einfach...
Tja, auch wenn es dich wundern wird, ich programmiere sogar auf 3 verschiedenen µControllern, nur habe ich dort keine 2 Millionen Zeilen Sourcecode, aber auch bei den µControllern ist das Debuggen möglich, wenn man es kann
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: Exception in Destroy

  Alt 15. Jan 2008, 13:14
Oder du änderst/überschreibst/hookst die FreeInstance und zählst einen Zähler in einer Datei hoch. Dann kannst du einen Breakpoint mit Zähler einsetzen. vielleicht hilft das.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#18

Re: Exception in Destroy

  Alt 22. Jan 2008, 09:40
so, nach zwei tagen suchzeit, habe ich nun meinen Fehler gefunden ...

Ich habe mir mal ein neues Objekt von einem TCanvas abgeleitet, das mir mehr funktionen zur Verfügung stellt.
und damit ich die nutzen kann habe ich überall

TmyCanvas(Canvas).TextOutAngle ... das ging alles ohne probleme, nur kam dann irgendwann auch ein ClipRect dazu, das sich das alte HRGN in einer variable merkt.
und da der systemeigene erzeugete Canvas natürlich zuwenig platz dafür hat, hat das
TmyCanvas(Canvas).OldRgn := .... zu großen problemen geführt.

Komischerweise aber nur mit D2007, unter D6 lief bzw läuft das alles noch immer ohne Probleme ... warum auch immer



Gibt es eigentlich irgendeine Möglichkeit, irgendein Tool, irgendetwas, um soetwas zu finden?
Ich habe hier Stunden um Stunden verbracht, um diesen sehr dummen Fehler zu finden, habe auch Tools wie madExcept und AQTime und co probiert, aber die zeigen entweder gar nichts an, oder den Fehler halt dann irgendwo an der falschen Stelle ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von ralfschwalbe
ralfschwalbe

Registriert seit: 19. Jul 2007
Ort: Lichtenstein/Sachsen
133 Beiträge
 
Delphi XE3 Professional
 
#19

Re: Exception in Destroy

  Alt 22. Jan 2008, 09:48
Hallo,

ich habe zwar in meinen Projekten "nur" ca. 600.000 Zeilen Code, aber ich bin von der Leistung von Eurekalog schwer begeistert!

Ich habe damit schon Fehler an fast unmöglichen Stellen (z.B.: im eigenen OLEDB-Provider) gefunden.

Einfach mal ausprobieren...
Ralf Schwalbe
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#20

Re: Exception in Destroy

  Alt 22. Jan 2008, 10:12
das problem ist halt nur, das es einfach zu spät ist, wenn die Exception auftritt, da kann halt niemand mehr sagen, wo der Fehler auftrat, da es eigentlich beim überschreiben des Speicherblockes (durch das falsche typecasten des Objektes) auftritt.
Und der nebeneffekt ist das dann das freigeben, von ganz anderen Objekten Fehler wirft.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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