2010-05-14 7 views
6

Ich ändere unsere VCL-Komponenten so, dass die Anwendung des Endbenutzers auf unsere dcu-Dateien verweist, anstatt unseren Quellcode jedes Mal zu erstellen. Wir haben alles funktioniert, aber ich möchte, dass der Debugger den Code des Benutzers stoppt, wenn eine Ausnahme ausgelöst wird. Zuerst würde es in unserem dcu anhalten und das CPU-Fenster öffnen. Ich konnte das verhindern, indem ich Debug-Informationen aus den dcu-Dateien löschte. Aber jetzt hört es immer noch nicht im Benutzercode auf (wie DevExpress-Bibliotheken und andere).Korrekte Delphi-Compiler-Schalter zum Anhalten im Benutzercode, nicht

Der folgende Screencast ist ein kurzes Beispiel. Das erste Mal, dass ich eine Ausnahme im DevExpress-Code verursache und der Debugger korrekt in meinem Button-Event stoppt. Das zweite Mal, dass ich eine Ausnahme in meinen Komponenten verursache, aber der Debugger hat mein Button-Ereignis nicht im Call-Stack und zeigt mir nicht, wo das Problem war. Irgendwelche Ideen warum?

http://screencast.com/t/NjhlOTRk

Zur Zeit der DCU des mit diesen Optionen Aufbau:

-$W+ -$D- -h -w -q 

Update: Die TDataSet Methoden zwischen meiner Komponente und der Schaltfläche Ereignisse scheinen, dieses Verhalten zu verursachen. Wenn ich stattdessen eine direkte Methode meiner Tabelle aufruft, bekomme ich das erwartete Verhalten. Ich vermute, dass ich nichts dagegen tun kann, aber ich bin immer noch neugierig, warum es passiert.

Antwort

1

Wenn der Quellcode anstelle von dcu's erstellt wird, liegt ein Fehler in der Konfiguration vor.

Der Dcus sollte sich im Suchpfad befinden, die Quelle im Suchpfad.

Auf diese Weise ist es dem Compiler nicht möglich, die DCUs nicht zu verwenden, und Sie können weiterhin debuggen.

0

Haben Sie versucht, Scharf-/Unscharfschaltung: Projektoptionen -> Delphi-Compiler -> Kompilieren -> 'Use Debug .dcus' (im Debug-Unterabschnitt)