Delphi-App hat "Keine Debug-Info" beim Debuggen
Wir haben gebaut, eine Anwendung, die Pakete und Komponenten. Wenn wir die Anwendung Debuggen, die "Ereignis-Log" in die IDE zeigt oft den unseren BPLs geladen werden, ohne die debug-Informationen ("Keine Debug-Informationen"). Ist dies nicht sinnvoll, da alle unsere Pakete und EXEs sind gebaut mit debug.
_(each project) | Options | Compiling_
[ x ] Assertions
[ x ] Debug information
[ x ] Local symbols
Symbol reference info = "Reference info"
[ ] Use debug .dcus
[ x ] Use imported data references
_(each project) | Options | Linking_
[ x ] Debug information
Map file = Detailed
Wir haben 4 Projekte, die alle gebaut mit Laufzeit pacakges:
- Kern.bpl
- Komponenten.bpl
- Plugin.bpl (beide #1 & #2)
- MainApp.exe (verwendet #1)
Probleme Beobachtet
1) Viele Male, wenn wir debug-Komponenten.bpl ist geladen mit debug-Informationen, aber alle Werte in der "Lokalen-Variablen" - Fenster leer. Wenn Sie Schwebeflug Ihre Maus über einer variable im code, es gibt kein popup, und Bewerten Fenster zeigt auch nichts an (die "Ergebnis" - Bereich ist immer leer).
2) Manchmal ist das Ereignis-Log zeigt "Keine Debug-Informationen" für verschiedene BPLs. Zum Beispiel, wenn wir das Plugin aktivieren.bpl-Projekt und setzen Sie den Run | Parameter die Host-Anwendung auf die MainApp.exe und dann F9 drücken, werden alle Module scheint, zu laden mit "Hat" Debug Info", außer für das Plugin.bpl-Modul. Wenn es lädt, wird das Ereignis-Log zeigt "Kein Debug Info". Allerdings, wenn wir die app schließen und sofort F9 drücken, wird es wieder laufen, ohne alles neu zu kompilieren und das Zeit-Plugin.bpl ist geladen mit debug ("Hat" Debug Info").
Fragen
1), Was bewirken würde, dass die "Lokale Variablen" - Fenster zu nicht die Werte anzuzeigen?
2) Warum sind die BPLs manchmal geladen ohne debug-Informationen, wenn die BPL war erfüllt mit debug und all die debug-Dateien (dcu, Karte, etc.) sind verfügbar?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wir haben festgestellt, ein ähnliches Problem in unserem Projekt. Leider haben wir Dutzende von bpl, so können wir Sie Zusammenführen in einem.
Diese Ausgabe erschien, nachdem wir migriert XE2 geändert und die Ordner-Struktur unserer Kompilier-Ziel.
Während es schwierig ist, zu sagen, ob neuere Versionen von Delphi eingeführt, die das Problem sind oder nicht, wir konnten das Problem beheben, indem Sie hinzufügen den Ordner, wo die bpls sind zusammengestellt in der path-Umgebungsvariablen. Mit dem Pfad-override-Funktion der IDE. Diese Art der Konfiguration war nicht notwendig, in Delphi 2010...
Ich würde es beschreiben, mein Problem mit ihm.
Ich dynamisch laden " - Paket mit
LoadPackage
Funktion.Kann ich sehen, in
SysInternals.com Process Monitor
dass packagename.DCP habe öffnen und Lesen succesfuly nachLoadPackage
verarbeitet - kein Datei-I/O ist fehlgeschlagen, kein Versuch, es zu finden, am falschen Ort, nichts verdächtiges. Vielleicht gibt es also etwas konstruieren, DCP, das macht IDE-debugger Nüsse gehen. Ich Sehne mich nach Zeiten, alsTurbo Debugger
war für Delphi.BTW, dasselbe gilt für das packagename.RSM ist eine erstellt.
Dann (bei Pause am Haltepunkt oder Schritt-Trace) ich öffne Ansicht /Debug-Fenster /Module und Letzte Modul ist von mir - und es ist leer "symbol information" der Zelle. Ich mit der rechten Maustaste klicken, wählen Sie " "Re-load symbols" Aktion - und hier ist es, ab jetzt kann ich die debug.
PS. Keine Ahnung, ob mir das helfen würde, um debug-Initialisierung Abschnitte aber - hoffentlich "
break on load
Menüpunkt" arbeiten würden, auch mit dynamischenLoadPackage
Anrufe...PPS. Es funktioniert tatsächlich, sogar über IDE neu gestartet. So, jetzt bin ich alarmiert BPL laden mit
CPU View
ich SchlagCTRL+ALT+M
scrollen Sie nach unten zu finden, mein BPL-r-klicken Sie aufReload Symbols
drücken Sie die EINGABETASTE schließen Sie dannModules
undCPU
Ansichten und StreikF9 (Run)
. Nachinitialization
Abschnitte vervollständigt bin ich wieder alarmiert durchCPU View
- nur wenigeJMP
s vor der Ausfahrt ausLoadPackage
- so schließe ichCPU View
und stikeF9
noch einmal. Ziemlich mühsam, aber immer noch besser als IDE neu starten.c:\RAAD Studio\9.0\...
und wurde ausgeführt und debuggt gegen eine andere BPL-Versionen. Dass auch eine Menge Probleme, wenn debugigng im inneren RTL, evaluatningvariable.classname
und so. Ich löschte diese älteren global BPLs und für ein paar Stunden dieses Problem nicht wiederholt. Hoffentlich würde es nicht wieder auftreten oder tun würde, viel seltenerDiese nicht-offizielle tool behebt viele Probleme, die mit Delphi. Es fixiert das Modul laden, ohne debug info für mich. Alle credits zu magicandre1981.
Bauen Sie Ihre separate Pakete mit debug-Informationen an, und Sie schließlich wollen, Sie zu bauen, ohne debug auch - so haben Sie beide in 2 spots. Dann wollen Sie bauen Ihr app-Projekt mit debug-info. Überprüfen Sie Ihre Wege, um sicherzustellen, dass Sie sind, einschließlich der debug-Paket aktiviert Quelle in Ihrem debug-Projekt baut. Es klingt wie Sie werden können, einschließlich der Pakete, die gebaut wurden, ohne debug, weil Sie von der falschen Quelle. Sie haben zu stellen Sie sicher, dass Sie nicht beide Wege enthalten ist, verlassen, Delphi, zu wählen, was zu zählen, wenn er die gleiche Paket in beiden stellen.
Für unsere Besondere situation, in der wir waren in der Lage, das Problem zu beheben durch die Kombination der Kern.pbl und Komponenten.bpl in eine einzige BPL. Jetzt alle Module geladen sind, mit debug-Infos und die gelegentliche Problem, wo das Fenster nicht angezeigt Werte für die Variablen ist gelöst.
debug
undrelease
Konfiguration?Dieses problem könnte sein, rund um QC#109291:
Bei der Delphi-IDE-start vorstellen .dproj-Datei und erstellen Sie die Konfiguration mit der option-sets, Sie verbessern die Projekt-release-management-eine ganze Menge.
Aber es hat auch einen Nebeneffekt, ist schwer zu wiederholen und zu fangen, und ich dachte, es war Fehler in der IDE. Sollte das problem immer verwirren die Nutzer, wo einige Projekt ist nicht in der Lage zu Debuggen, die sich im IDE-debugger. Auch wir überprüfen alle relevanten Einstellungen der compiler-und linking-Optionen im Projekt, wird der debugger nicht aktiviert an dem Projekt. Einige Projekt arbeitet und einige Projekt nicht. Wir haben sogar Zusammenhang ist sein problem mit dem Arbeitsspeicher oder cpu-problem.
Merke ich, das problem ist wegen der .dproj Datei-Einstellung speichert keine richtigen Informationen. Wenn die verwandten .dproj-Datei hat so etwas wie dieses:
Den
Release.optset
bindenCfg_2
undDebug.optset
bindenCfg_1
aberRelease
Konfiguration ist mitCfg_1
undDebug
Konfiguration ist mitCfg_2
.Wenn Sie das Projekt erstellen, wird die debug-info wird nicht erzeugt in der debug-Konfiguration, sondern erzeugen auf der release-Konfiguration.
Einen workaround-Lösung ist offen .dproj mit einem beliebigen text-editor, aber nicht die Delphi-IDE, und update:
Fand ich in der .dprj Datei eine Zeile in der Cfg_2 détails mit Wert Debugger_LoadAllSymbols, die auf false festgelegt wurde. Ich habe es eingestellt auf "true". Das Problem ist gelöst. Vielleicht nicht vergleichbar mit deinem Fall, aber kann helfen.