Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Breakpoints funktionieren nicht -> DSK löschen (https://www.delphipraxis.net/203433-breakpoints-funktionieren-nicht-dsk-loeschen.html)

TigerLilly 16. Feb 2020 15:05

Breakpoints funktionieren nicht -> DSK löschen
 
Kennt das wer? Irgendwann funktionieren die Breakpoints nicht mehr und werden grün. Dann muss ich "Alles schließen" + die DSK Datei löschen. Dann geht´s wieder für ne Weile.

Weiß da jemand Abhilfe?

Danke!

Uwe Raabe 16. Feb 2020 16:12

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Die Breakpoints werden in der Tat in der DSK gespeichert. Allerdings entweder in der vom Projekt oder der von der Projektgruppe - je nachdem, was man geöffnet hat (die virtuelle Projektgruppe, die beim Öffnen eines Projekts erzeugt wird, zählt hier nicht).

Es ist übrigens ratsam, die Vorgaben für das DCU-Verzeichnis $(Platform)\$(Config) zu beherzigen. Damit vermeidet man das Mischen von DEBUG- und RELEASE-DCUs, das genau das beschriebene Verhalten hervorrufen kann.

TigerLilly 16. Feb 2020 17:08

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1457644)
Es ist übrigens ratsam, die Vorgaben für das DCU-Verzeichnis $(Platform)\$(Config) zu beherzigen. Damit vermeidet man das Mischen von DEBUG- und RELEASE-DCUs, das genau das beschriebene Verhalten hervorrufen kann.

Ja, das habe ich beherzigt. Einzig die EXE wird woanders hin kompiliert.
Wenn ich "Projekt-Dektop speichern" abwähle, genügt ein bloßes Alles schließen und Neu öffnen.
Es ist auch egal, ob es schon Breakpoints gibt oder nicht, irgendwann sind sie nicht mehr aktiv.

Ich hab ja fast das Gefühl, dass das etwas mit der Fensteranordnung zu tun hat. So als ob es da beim Auslesen der Eigenschaften ein Porblem gibt + die Breakpoints nicht mehr gelesen werden.

TigerLilly 17. Feb 2020 12:29

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Hab das Problem nur ich?

Gibt es irgendwo ein LOG, in dem man nach Problemen suchen kann?

Whookie 17. Feb 2020 13:02

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Habe ich in der Form eigentlich noch nicht beobachtet...

TigerLilly 17. Feb 2020 13:16

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Ich glaube, es hat mit dem Hin- und Herschalten zwischen Standard+Debug Layout zu tun. Iregendwas mit den Fenstern oder derem Layout.

Rolf Fankhauser 11. Mär 2020 11:34

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Hallo

Bei mir funktionieren die Breakpoints auch nicht. Ich habe parallel 10.2.3 und 10.3.3 installiert und bei beiden funktioniert es nicht, weder bei Delphi noch bei C++ Builder. Ich bin im Debug-Mode. Dann würde ich erwarten, dass bei einem neuen Projekt mit Default-Einstellungen und Debug-Mode die Breakpoints funktionieren. Irgendwas muss man wohl noch einstellen.
Ich kann nur rote Punkte setzen, aber nicht rote Punkte mit Häkchen. Müsste es blaue Punkte am linken Rand haben?
Komme mir ziemlich blöd vor!! Bei Delphi7 oder BCB6 war das nie ein Problem!
Jetzt wollte ich mich endlich mit den neuen IDE's anfreunden und nun dies!
Ich speichere meine Projekte nicht standardmässig unter C:\Users\[Username]\Documents\Embarcadero\Studio\Projects ab. Kann das ein Problem sein?

Vielen Dank für eure Hinweise, Rolf

Rolf Fankhauser 11. Mär 2020 12:19

AW: Breakpoints funktionieren nicht -> DSK löschen
 
:oops::oops::oops:

Habe übersehen, dass > (Run) ohne Debugging ist und ich []> (Run mit Fenster) klicken muss.

Alles ok!!

stahli 11. Mär 2020 13:27

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Nur zur Beruhigung: Ging mir anfangs auch so. :-)

Rolf Frei 11. Mär 2020 13:29

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Ich habe mit Breakpoints keine Probleme, zumindest solange ich nur die Debug Konfiguration nutze. Wenn ich da auf Releease Umstelle und einen Build machen, gehen die Breakpoints logischerweise nicht mehr, wenn ich dann wieder auf Debug umstelle. Das ist aber eigentlich logisch, weil ich die DCU's da liegen habe wo auch die pas Files sind. Damit ich die Breakpoints also wieder nutzen kann, muss ich nach dem Umschalten zum Debugmodus, das ganze Projekt neu Builden, damit die DCU's wieder Debugionfos enthalten. Ich unterscheide also nicht beim DCU Ausgabepfad (Unit Output Directory) und habe den leer, damit die dcu's da gemacht werden, wo auch die PAS liegen. So habe ich bisher keine unerklärlichen Probleme mit den Breakpoints gehabt.

himitsu 12. Mär 2020 13:19

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Zitat:

Zitat von Rolf Frei (Beitrag 1459477)
So habe ich bisher keine unerklärlichen Probleme mit den Breakpoints gehabt.

Nja, Probleme hast in dem Sinne schon, dass du erst den Build machen mußt, um die "richtigen" DCUs zu bekommen.
Zwischen Release und Debug geht es ja noch, aber zwischen unterschiedlichen Platformen und Compilern raucht es besonders schön.

Darum gibt es ja den Weg über die verschiedenen Verzeichnisse, damit beim Umschalten sofort alles da ist.
Das kann man sogar noch weiter treiben, also inkl. Compiler/Delphi-Version, wenn man mit mehreren Delphis arbeitet.
Sowas ist vor allem wichtig, wenn man mehrere Versionen erzeugen will (Win32, Win64, Android, iOS, Delphi 7, XE, 10.3, 10.4, usw.)
z.B.
Delphi-Quellcode:
.\_DCU_$(ProductVersion)_$(Platform)_$(Config)
vom Projekt aus, oder mit absolutem Pfad ala
Delphi-Quellcode:
C:\DCUs\$(ProductVersion)_$(Platform)_$(Config)


Aber du kannst dir das auch nur in ein Unterverzeichnis
Delphi-Quellcode:
.\_DCUs
reinmachen, dann brauchst nur dieses Verzeichnis zu löschen und alles ist sauber, anstatt zwischen den PAS überall die DCUs zu suchen.




Ein Problem gibt es, was nicht auftritt, wenn die DCUs neben den PAS liegen.
Mehreren Projekte, welche die selben Ausgabeverzeichnisse nutzen (womöglich in einer Projektgruppe), aber wo in den Pojekten gleichnamige Units vorkommen.

Uwe Raabe 12. Mär 2020 14:28

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Zitat:

Zitat von himitsu (Beitrag 1459539)
Mehreren Projekte, welche die selben Ausgabeverzeichnisse nutzen (womöglich in einer Projektgruppe), aber wo in den Pojekten gleichnamige Units vorkommen.

Dafür kann man in den Ausgabepfaden noch den $(SanitizedProjectName) einsetzen, dann bekommt jedes Projekt seine eigene DCU-Verzeichnisstruktur.
Code:
.\dcu\$(SanitizedProjectName)\$(ProductVersion)\$(Platform)\$(Config)

TigerLilly 20. Mär 2020 10:02

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Bis jetzt ist es nur ein einziges Projekt, bei dem es das Problem gibt. Alle anderen funktionieren wie gewünscht. Einmal F9, Breakpoints funktionieren + dann nicht mehr. Es genügt "Alles schließen", neu öffnen und die Breakpoints gehen wieder. Was kann das sein?

TigerLilly 24. Mär 2020 22:15

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Ich sollte präziser sein. Also: Das Projekt ist Teil einer Projektgruppe. Öffne ich das Projekt und nicht die Projektgruppe, funktioniert alles wie gewünscht. :shock:

Uwe Raabe 24. Mär 2020 23:17

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Die Breakpoints werden in der DSK-Datei des Projekts oder der Projektgruppe gespeichert, je nachdem was man öffnet.

Das macht es ja auch so schwierig, die Breakpoints z.B. nach einer Formatierung der Sourcen wieder korrekt zu setzen. Neben der DSK-Datei des aktuellen Projekts oder der Projektgruppe, kann eine Unit ja auch in anderen Projekten verwendet werden, zu denen es Breakpoints in deren DSK-Dateien gibt. Von denen weiß man in der Regel aber nichts im aktuellen Projekt.

Ich erwähne das u.A. auch auf einen Beitrag von @stahli zu seinem UnitOptimizer, in dem er sagt:
Zitat:

Also die Widerherstellung der Bookmarks und Breakpoints nach der Codeformatierung habe ich im Griff.
Das wage ich zu bezweifeln.

TigerLilly 25. Mär 2020 08:31

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Hmm. Dann wäre eine mögliche Erklärung für mein Problem, dass die Breakpoints aus der DPOJ mit denen in der DSK kollidieren? Ich weiß nicht, ich lass mir einreden, wenn Breakpoints auf andere zeilen rutschen etc, aber das gar nichts mehr geht, wundert mich schon.

Aber dann lösche ich mal DPROJ und DSK + öffne das projekt nur mehr aus der Projektgruppe. mal sehen.

stahli 25. Mär 2020 10:00

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1460449)
Ich erwähne das u.A. auch auf einen Beitrag von @stahli zu seinem UnitOptimizer, in dem er sagt:
Zitat:

Also die Widerherstellung der Bookmarks und Breakpoints nach der Codeformatierung habe ich im Griff.
Das wage ich zu bezweifeln.

Hmm, ich habe schon aufgehorcht, als ich hier gerade mit las.
Eine solche Unterscheidung war mir nicht bekannt.

Ich arbeite aktuell in einer Projektgruppe. Wird eine solche eigentlich nicht immer übergeordnet erzeugt - auch wenn nur ein Projekt bearbeitet wird?

Ok, es kann sein, dass es Konstellationen gibt, bei denen ich die Breakpoints noch nicht wieder herstellen kann.
Evtl. müsste ich nochmal nachbessern oder die Funktionalität auf den Projektgruppenfall beschränken.

Augenscheinlich hat bei mir die Funktion aktuell immer funktioniert.
Aber die ToolsAPI sind schon SEHR unübersichtlich. :-(

Ich werde das heute Abend mal testen.

Uwe Raabe 25. Mär 2020 10:40

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Zitat:

Zitat von stahli (Beitrag 1460462)
Ich arbeite aktuell in einer Projektgruppe. Wird eine solche eigentlich nicht immer übergeordnet erzeugt - auch wenn nur ein Projekt bearbeitet wird?

Es wird in der Tat eine virtuelle Projektgruppe erzeugt, wenn du direkt ein Projekt öffnest. Diese wird aber erst gespeichert, wenn du das explizit auswählst. Die IDE unterscheidet hier schon, ob du eine Projektgruppe oder ein Projekt öffnest und stellt das auch entsprechend in der Titelleiste dar.

Du kannst das ja mal ausprobieren. Die Breakpoints und auch die geöffneten Dateien sind anders wenn du ein Projekt öffnest, als wenn du eine Projektgruppe öffnest die das Projekt enthält. Grund sind die unterschiedlichen DSK-Dateien für den jeweiligen Fall.

Wird nur ein Projekt und keine Projektgruppe geöffnet, sollte IOTAModuleServices.MainProjectGroup übrigens ein nil zurück liefern. Das gerade aktuelle Projekt ist dann über IOTAModuleServices.GetActiveProject zu ermitteln.

Wir hatten vor einiger Zeit eine Diskussion u.a. mit Marco Cantú darüber, wie man den Delphi-Formatter dazu bringen kann die Breakpoints zu berücksichtigen. Die festgestellten Probleme haben dann dazu geführt das Feature erst wieder auf Eis zu legen.

Die unterschiedlichen DSK-Dateien waren aber nicht das einzige Problem. Was macht man z.B. wenn eine Zeile mit Breakpoint gesplittet oder zusammengeführt wird?

stahli 25. Mär 2020 10:59

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Also ich ziehe über die IOTA-Funktionen die Breakpunkte heraus, die zur aktuellen pas-Datei gehören.
Im Quelltext setze ich Marker, die ggf. mit verschoben werden.
An den Marker-Stellen stelle ich Breakpoints wieder her.

Gleiches mit Bookmarks und der Cursorposition.

Das ist ziemlich aufwendig (aufwendiger als es sich anhört ;-) ) aber funktioniert augenscheinlich gut.

Kann natürlich sein, dass es Fälle gibt, die so nicht abgedeckt werden. :-/


Was garantiert ein Problem ist, sind Breakponts in Units, die von anderen Projekten gesetzt wurden. Die kennen dann natürlich keine Quelltextverschiebungen. Solche Sonderfälle (die sicherlich auch selten sind) wird man wohl so hinnehmen müssen...

(Wobei ich mich frage, warum die IDE so kompliziert arbeitet. Sicherlich aus historischen Gründen.)


kurzes Nebenthema:
Bei Interfaces, die projektübergreifend genutzt werden, werde ich Änderungen nachverfolgbar machen. Wird also in Interface IPerson die Property Vorname in FirstName umbenannt, werden alle Klassen-Eigenschaften des aktuellen Projektes sofort umbenannt.
Wird die Unit mit dem Interface auch in anderen Projekten anderer Projektgruppen genutzt, werden auch deren Klassen-Eigenschaften bei späterer Bearbeitung entsprechend angepasst.
Dazu werden entsprechende Änderungsinfos hinterlegt.

Bei projektgruppenübergreifenden Breakpoints wird das aber so kaum möglich sein.

dummzeuch 25. Mär 2020 11:14

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Zitat:

Zitat von stahli (Beitrag 1460472)
Also ich ziehe über die IOTA-Funktionen die Breakpunkte heraus, die zur aktuellen pas-Datei gehören.
Im Quelltext setze ich Marker, die ggf. mit verschoben werden.
An den Marker-Stellen stelle ich Breakpoints wieder her.

Gleiches mit Bookmarks und der Cursorposition.

Das ist ziemlich aufwendig (aufwendiger als es sich anhört ;-) ) aber funktioniert augenscheinlich gut.

Das ist definitiv besser als das der Formatter in GExperts macht. Der liest lediglich die Zeilennummern aus, formatiert und setzt anschließend die Breakpoints in dieselben Zeilen. Das passt natürlich nicht mehr, wenn sich Zeilen verschoben werden. Dasselbe passiert für Bookmarks. Trotzdem war das schon ein grosser Fortschritt gegenüber vorher, da wurden sowohl Breakpoints als auch Bookmarks einfach gelöscht. (Man muss sich auch mal selbst loben. ;-) )

Aber wo wir gerade über Code Formatting reden: Kann Deiner auch nur den aktuell markierten Bereich formatieren? Das ist definitiv ein Feature, das sehr nützlich wäre, wenn man z.B. das Format der Unit beibehalten will, aber den gerade bearbeiteten Bereich (z.B. eine neue Procedure) formatieren will (damit man das nicht manuell manchen muss).

Puristen werden jetzt natürlich aufheulen und sich beschweren, dass dann ja die Unit unterschiedliche Format-Stile enthält, aber ich sehe das pragmatich: Besser unterschiedlich formatiert als einen Bug übersehen, weil man manuell formatiert. (Der Klassiker: if/then/while Blöcke falsch eingerückt und schon passt die Formatierung nicht mehr zur Programmlogik.)

stahli 25. Mär 2020 11:21

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Teilformatierungen kann mein Tool (noch) nicht.
Ich wüsste aktuell auch nicht, wie das realisierbar wäre.
Weitere Diskussionen dazu aber dann besser im zugehörigen Thread...

stahli 25. Mär 2020 20:06

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Ich habe mir die Breakpoints und Bookmarks über Projektgruppen hinweg mal angesehen: https://youtu.be/v1yiqkkP3kw

Ich halte das Problem für systembedingt in Delphi und sehe da keine Lösung.

Aus meiner Sicht ist ein paralleles Arbeiten und Debuggen von Units in mehreren Projekten sicherlich auch eine seltene Ausnahme.
Wenn ich etwas falsch verstanden oder getestet habe, dann gebt bescheid...

TigerLilly 25. Mär 2020 21:32

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Stahli, ich möchte nicht unhöflich sein, aber das ist nicht thema dieses Threads. das passt doch besser in deinen eigenen, oder?

stahli 25. Mär 2020 21:44

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Ok, ich hatte das in Bezug auf die Speicherung (und das mögliche Beschädigen) von Breakpoints gesehen.
Aber kann auch gern verschoben werden.

TigerLilly 26. Mär 2020 08:00

AW: Breakpoints funktionieren nicht -> DSK löschen
 
Ja, eh.
Aber mein Problem ist ja nicht, dass sie nicht mehr da sind, sondern, dass sie nicht funktionieren. Ich wechsle nicht zwischen DPROJ und PROJ.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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