AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Debuggen in eigenen Komponenten (VCL)

Ein Thema von lt.col.blair · begonnen am 2. Aug 2021 · letzter Beitrag vom 3. Aug 2021
Antwort Antwort
lt.col.blair

Registriert seit: 5. Feb 2011
7 Beiträge
 
#1

Debuggen in eigenen Komponenten (VCL)

  Alt 2. Aug 2021, 10:36
Hallo,
seit Jahren (wenn nicht Jahrzehnten) arbeite ich in Delphi mit eigenen Komponentenbibliotheken.
Wenn ich eine Anwendung debugge, will ich manchmal auch durch den Quelltext meiner Komponenten singlesteppen.
Das war bisher selten ein Problem, aber jetzt kriege ich's einfach nicht mehr hin.
Ich weiß nicht, ob's an den Compiler- oder Linker-Einstellungen im Anwendungsprojekt oder in den Packages liegt.
Ich kann im Quelltext mit Ctrl+Klick zum Quelltext der Methoden meiner Komponenten springen.
Diese werden aber nach dem Compilieren immer ohne die blauen Punkte angezeigt, so dass ich keine Breakpoints setzen kann.
Wenn ich steppe (F7), springt der Debugger immer nur in die Assembler-Funktionen in der Unit System.
Im CPU-Fenster sehe ich dann auch die Quelltextzeilen meiner Komponenten.

Die Source-Verzeichnisse meiner Packages sind im Suchpfad.
Die Ausgabeverzeichnisse der Packages sind im Debug-DCU-Pfad.
Ich habe in den Packages in den Linker-Einstellungen "Debug-Informationen" und "Mit externen Debug-Symbolen" aktiviert.

Hat irgendjemand eine Idee, welche Einstellungen ich noch prüfen könnte?
Danke.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.993 Beiträge
 
Delphi XE4 Professional
 
#2

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 2. Aug 2021, 10:42
Hallo,
eigene Komponenten debugge ich, indem ich sie zur Laufzeit erzeuge.

Deine Vorgehensweise kenn ich gar nicht.
Heiko
  Mit Zitat antworten Zitat
lt.col.blair

Registriert seit: 5. Feb 2011
7 Beiträge
 
#3

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 2. Aug 2021, 11:39
Die Komponenten, durch die ich durchsteppen will, sind teilweise sehr komplex und bereits seit Jahren in meinen Anwendungen im Einsatz.
Wenn ich dann in einer Anwendung unter besonderen Bedingungen "merkwürdiges" Verhalten feststelle, gehe ich gerne nochmal im Singlestep durch, um die Ursache zu finden.
Das ist häufig schneller und einfacher, als alle Bedingungen, die zu dem Verhalten führen nachzuvollziehen.

Das mache ich schon seit langem so, aber jetzt klappt es nicht mehr, und ich verstehe nicht, was sich/ich seit dem letzten erfolgreichen Durchlauf geändert hat/habe.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.224 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 2. Aug 2021, 19:10
Sind die Komponenten in Delphi registriert, so dass sie in der Komponentenpalette stehen oder erzeugst Du sie dynamisch?

Wenn keine blauen Punkte vorhanden sind, dann ist die Unit offenbar nicht Bestandteil des aktuellen Projektes.
Hast Du evtl. mehre Projekte in der aktuellen Programmgruppe?
Ist die Unit im aktuellen Projekt eingebunden?

Dann kann evtl. Projekt bereinigen und neu erzeugen helfen.

Hast Du evtl. die Unit mit den Komponenten in einen anderen Ordner verschoben? Das kann Delphi schnell mal durcheinander bringen.
Dann kann der Compiler u.U. mit einem anderen Stand arbeiten als der Editor.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
567 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 3. Aug 2021, 08:09
Hast du deine eigene Komponente vielleicht als Laufzeit-Package eingebunden?
  Mit Zitat antworten Zitat
lt.col.blair

Registriert seit: 5. Feb 2011
7 Beiträge
 
#6

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 3. Aug 2021, 08:14
Hallo,
die Komponenten sind in der IDE registriert. Ich habe ein Runtime-Package und ein Designtime-Package mit etlichen Property- und Komponenteneditoren, dasauch die Komponenten in der ID registriert - so wie's der Standard vorsieht.
Sowhol für die Anwendung als auch für die Packages habe ich mehrere Build-Konfigurationen eingestellt und kompiliert:
für Win32 und Win64 (nur das Runtime-Package), sowie für Release und Debugging.
Die DCU- Dateien der Packages sind für die Builds jeweils in eigenen Verzeichnissen, die auch im jeweiligen Bibilothekspfad und im Debug-DCU-Pfad für der Plattformen eingetragen sind (Optionen->Sprache->Delphi->Bibliothek).
Package (.bpl) und DCP-Dateien stehen in "$(BDSCOMMONDIR)\Bpl\$(Platform)" und "$(BDSCOMMONDIR)\Dcp\$(Platform)", wie in den Bibilothekseinstellungen eingetragen.

Wenn ich im Release-Modus kompiliere, erwarte ich auch gar nicht, dass ich die Komponenten durchsteppen kann.
Wenn ich die Kompilierung in der Build-Konfiguration "Debug" duchführe, kann ich durch den Code aller ursprünglichen VCL-Komponenten durchsteppen (z.B. ist VCL.Forms komplett mit "blauen Punkten" gespickt). Der Code für meine eigenen Komponenten bleibt aber OHNE diese blauen Punkte.

Was übersehe ich?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.993 Beiträge
 
Delphi XE4 Professional
 
#7

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 3. Aug 2021, 08:25
Hallo,
musst du die Komponente nicht neu installieren nach dem Umstellen auf Debug?
Heiko
  Mit Zitat antworten Zitat
lt.col.blair

Registriert seit: 5. Feb 2011
7 Beiträge
 
#8

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 3. Aug 2021, 08:58
Hmmm...
Soweit ich weiß (und so hat es bisher auch jahrelang geklappt), werden (je Plattform) immer zwei Versionen der .dcu-Dateien von Komponenten erzeugt: eine Release-Version und eine Version mit Debug-Informationen. Die Release-.dcu wird in das Verzeichnis geschrieben, das auch im Bibliothekspfad aufgenommen wird, die Debug-.dcu steht in einem anderen Verzeichnis, das in die Liste der "Debug-DCU" Pfade aufgenommen wird.
Soweit ich weiß gibt bei den .bpl und .dcp je Plattform nur eine - oder liege ich da falsch? In den Bibiliotheksoptionen (Tools->Optionen->Sprache->Delphi->Bibliothek) wird je Plattform nur ein Standardverzeichnis für diese Dateien angeboten - im Gegensatz zu Bibilothekspfad und Debug-DCU-Pfad, die ganze Listen aufnehmen können.

Ich bin mir auch nicht sicher, ob das Problem in den Pfadeinstellungen oder in den Compiler-/Linker-Einstellungen liegt.
Die Einstellungen in meinem Anwendungsprojekt sind anscheinend richtig, denn z.B. in der VCL.Forms.pas funktionieren Break-Points.
Deshalb müssten dann evtl. die Compiler/Linker Einstellungen in meinen Packages falsch sein. Ich habe meine Einstellungen mal als Screenshot angehängt:


compiler-optionen-packagejpg.jpg
linker-optionen-package.jpg
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
567 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 3. Aug 2021, 09:26
Hallo,
die Komponenten sind in der IDE registriert. Ich habe ein Runtime-Package und ein Designtime-Package mit etlichen Property- und Komponenteneditoren, dasauch die Komponenten in der ID registriert - so wie's der Standard vorsieht.
Ich meinte: Hast du vielleicht in den Projektoptionen unter Packages das "Mit Laufzeit-Packages linken" aktiviert und dort deine Komponente in der Liste der Laufzeit-Packages?
  Mit Zitat antworten Zitat
lt.col.blair

Registriert seit: 5. Feb 2011
7 Beiträge
 
#10

AW: Debuggen in eigenen Komponenten (VCL)

  Alt 3. Aug 2021, 09:43
Ich meinte: Hast du vielleicht in den Projektoptionen unter Packages das "Mit Laufzeit-Packages linken" aktiviert und dort deine Komponente in der Liste der Laufzeit-Packages?
Nein, das ist es leider nicht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf