Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#7

AW: Freigabe, aller Formulare meiner Anwendung, debuggen

  Alt 21. Aug 2014, 08:56
Der Stacktrace nach/bei der Exception sagt dir nichts?
Und eventuell noch ein Self.Name/ClassName oder dergleichen angucken.

Warum werden überhaupt soviele Forms immer automatisch erzeugt?
Werden die denn wirklich alle ständig benötigt?

Man kann natürlich auch die eigenen Forms ableiten, im Vorfahren den Destructor überschreiben und mit einem Try-Except befüllen, welches einem zumindestens die Form nennt, bei welcher es knallt.

Delphi-Quellcode:
type
  TForm = class(Forms.TForm)
    destructor Destroy; override;
  end;

destructor TForm.Destroy;
var
  S: string;
begin
  try
    S := ClassName + ' ' + Name + ': '; // wird ja theoretisch im inherited freigegeben
    inherited;
  except
    on E: Exception do
      ShowMessage(S + E.Message);
  end;
end;
Muß ja nichtmal eine "wirkliche" Ableitung sein, sondern einfach das vor die TMyForm-Deklaration, bzw. in eine eigene Unit und die als Allerletztes ins Uses vor die eigenen Forms-

Man darf natürlich keinen Breakpoint in DestroyComponents setzen,
Kann man schon.
Notfalls deaktiviert man den Haltepunktpunkt einfach und lässt ihn von einem passendem Trigger aktivieren.
Oder man gibt ihm eine Bedingung, damit er nur bei TForms anhält.
Ein Haltepunkt nach Application.Run; (wenn nichts mehr da ist, dann auf das end. danach) und dann manuell durchsteppen (F7/F8/F10).

Dabei natürlich vorher vergessen die RTL/VCL-DebugDCUs abzuschalten, welche ja nur standardmäßig immer an sind.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Aug 2014 um 08:58 Uhr)
  Mit Zitat antworten Zitat