AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Breakpoints funktionieren nicht -> DSK löschen

Breakpoints funktionieren nicht -> DSK löschen

Ein Thema von TigerLilly · begonnen am 16. Feb 2020 · letzter Beitrag vom 26. Mär 2020
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
36.605 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 12. Mär 2020, 12:19
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. .\_DCU_$(ProductVersion)_$(Platform)_$(Config) vom Projekt aus, oder mit absolutem Pfad ala C:\DCUs\$(ProductVersion)_$(Platform)_$(Config)

Aber du kannst dir das auch nur in ein Unterverzeichnis .\_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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (12. Mär 2020 um 12:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.884 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 12. Mär 2020, 13:28
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)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
743 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 20. Mär 2020, 09:02
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?
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
743 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 24. Mär 2020, 21:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.884 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 24. Mär 2020, 22:17
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
743 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 25. Mär 2020, 07:31
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.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 25. Mär 2020, 09:00
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
7.884 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 25. Mär 2020, 09:40
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?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 25. Mär 2020, 09:59
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (25. Mär 2020 um 10:02 Uhr)
  Mit Zitat antworten Zitat
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
724 Beiträge
 
Delphi 2007 Professional
 
#20

AW: Breakpoints funktionieren nicht -> DSK löschen

  Alt 25. Mär 2020, 10:14
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.)
Thomas Mueller
  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 +1. Es ist jetzt 11:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf