AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Breakpoints in D7 nicht erreichbar

Ein Thema von Nic2012 · begonnen am 9. Sep 2013 · letzter Beitrag vom 10. Sep 2013
Antwort Antwort
Seite 1 von 2  1 2      
Nic2012

Registriert seit: 2. Mai 2012
62 Beiträge
 
#1

Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 10:54
Hallo,
ich habe hier ein altes D7-Projekt "geerbt". Dieses hat u.a. ein sehr umfangreiches Daten-Modul mit etwa 400 deklarierten Methoden, ca. 200 Objekten (TSmartQuery, TOraStoredProc) und insgesamt 10000 Zeilen Code.

Nach dem Erzeugen des Projekts sind nur in den letzten 1800 Zeilen die blauen Marker (für mögliche Breakpoints). Setze ich Breakpoints an anderer Stelle im Code, ist ein Debuggen nicht möglich bzw. stopt der Debugger NICHT an gewünschter Stelle. Das ist für der Fehlersuche und im Hinblick auf die Größe des DM-Moduls mehr als hinderlich.

Die DFM hat ca. 534 kB, die Unit ca. 366 kB.
Bevor ich mich vorsichtig an Refactoring mache wollte ich wissen ob für D7 Limits bzgl. maximaler Dateigrößen der DFM, Unit und max. Zeilenanzahl gibt, um noch vernünftig zu debuggen ?

Gruß, Nic

PS: Sachdienliche Hinweise für ein gutes Refactoring-Tool, dass das Verschieben von Objekten, Methoden in andere Module (ähnlich wie in Eclipse unter Java) unterstützt wäre ich sehr dankbar
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 13:29
Hast Du wirklich "Erzeugen" genutzt (statt nur Compilieren)?
Weiterhin solltest Du Keine Kopien Deiner Ordner im Projektordner haben ("MyProject" und "MyProject-Kopie").
So etwas nimmt Delphi übel.

Refactoring ist natürlich in aktuellen Delphi-Versionen deutlich umfangreicher.
Wunder darf man aber nicht erwarten.
Dritttools kenne ich nicht.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Nic2012

Registriert seit: 2. Mai 2012
62 Beiträge
 
#3

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 13:38
Natürlich auch Compilieren, macht im Ergebnis aber keinen Unterschied.
Nein, es gibt im Projekt-Ordner keine Kopien. Das gesamte Projekt besteht aus einigen Dutzend Forms, DMs, und Units, aber nur bei diesem Modul gibt es nur sehr eingeschränkte Debug-Möglichkeiten, d.h. nur auf den letzten 1800 von insgesamt 10000 Zeilen.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
676 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 14:32
Die Warnung mit den Projektkopien kann man noch globaler nehmen: sind die Unit-Namen recht eindeutig? Hat mat sowas wie FormUnitMain.pas in jedem Projekt, springt der Debugger gerne zur Anzeige mal in die falsche Datei (Stand: XE, bei D7 war das auch schon so).

Ich habe früher in jugendlichem Leichtsinn und unter D7 auch lange eine Unit mit noch mehr Zeilen gehabt, und Debuggen lief dort überall - die nachgefragte Obergrenze sollte es nicht geben (zumindest nicht bei 10k Zeilen - bei meinem Negativbeispiel hat die .pas 544KB, 13K Zeilen, die .dfm 2,4MB - das lief unter D7, danach habe ich die Funktionalität in kleine Klassen in kleinen Units aufgeteilt...).
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.021 Beiträge
 
Delphi 12 Athens
 
#5

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 14:37
Ich habe hier Units mit bis zu 140.000 Zeilen (natürlich automatisch generiert) und da geht das Debuggen auch ganz hervorragend.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Nic2012

Registriert seit: 2. Mai 2012
62 Beiträge
 
#6

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 14:46
Danke für die zahlreichen Antworten.
Nein, Projektname bzw. die Namen der Forms, DMs und Units ist durchgehend eindeutig. Wie gesagt es ist nur diese DM. Kann es an der Vielzahl der eingebundenen Objekte ca. 200 liegen ?
Welche Erklärung gibt es, das nur knapp 20% der letzten Zeilen mit dem blauen Punkt (als potentiele Breakpoints) gesetzt ist und zumindest nur dort der Debugger halten kann ?
  Mit Zitat antworten Zitat
lowmax_5

Registriert seit: 9. Mai 2003
Ort: Münster, NRW
257 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 14:53
Hast Du vielleicht mal Code aus dem Internet direkt in die Unit kopiert? Dann kann es an dieser Stelle auch zu Störungen kommen.

Dann schaue Dir doch die Stelle ab der die Breakpoints nicht mehr funktionieren mal genauer an. Ggf. Codeteil entfernen und prüfen, ob es dann funktioniert.

Ggf. ist auch eine Kommentarfunktion nicht korrekt gesetzt. Dieses kann auch zu einem Aussetzer führen...
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 15:08
Hallo,

das von Dir beschriebene Problem kenne ich auch, aber auch bei deutlich kleineren Units und DMFs.

Einige Programme kann ich nicht Debuggen, andernorts läßt sich der Inhalt von Variabeln beim Debuggen nicht anzeigen (angeblich alles wegoptimiert). Einen Grund für dieses Verhalten von D7 kenne ich nicht, aber ich habe eine Vermutung, die ich bisher weder beweisen noch widerlegen konnte.

Bei Programmen, die viele Units (unterschiedlicher Quellen) nutzen, scheint das Problem häufiger aufzutreten, als bei 100%igen "Eigenbauten".

Mein Verdacht fällt hier auf die Kompilerschalter {$D+} und {$D-}.

Unabhängig von den Projekteinstellungen kann man diese Beiden ja auch im Quelltext unterbringen. Kommt der Kompiler an einem der beiden Schalter "vorbei", so scheint für ihn ab dort die entsprechende Bedingung zu gelten. Hierdurch kann es passieren, dass an beliebigen Stellen das Debuggen funktioniert oder eben auch nicht. Dies scheint sich aber nicht nur auf die Unit auszuwirken, in der der Schalter steht, sondern auch auf die Units, aus denen die Unit mit Kompilerschalter aufgerufen wird. Hierdurch scheint dann das Debuggen in Units ab oder bis zu bestimmten Stellen zu funktionieren oder halt auch nicht.

Bei Deinem konkreten Fall könnte es unter Umständen eventuell vielleicht (also eine extrem wage Vermutung) möglich sein, dass kurz vor der Zeile, ab der die Breakpoints setztbar sind, beim Kompilieren eine Unit aufgerufen wird, in der der Schalter {$D+} steht. Irgendwo davor wird vermutlich eine Unit kompiliert, in der der Schalter {$D-} steht und deshalb keine Debuginformationen vorhanden sind.

Aber: Nix genaues weiß man nicht.

Ab und an scheint es zu helfen hinter die Uses-Anweisungen zusätzlich ein {$D+} einzufügen. Manchmal hilfts, aber nicht immer.

Eventuell hast Du ja damit Glück.
  Mit Zitat antworten Zitat
rwalper

Registriert seit: 6. Sep 2006
45 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 15:13
Hi, ich hatte bei D6 mal das gleiche Problem.

Probleme haben jene Zeilen bereitet, deren Zeilenende nur aus #10 statt #13#10 bestand. Ab der ersten dieser Zeilen, waren die Debug-Punkte "verrutscht".
Kontrolliere das doch einmal in einem Editor, der die Zeilenende-Zeichen anzeigt, z.B. Notepad++ (da steht dann LF statt CRLF).
  Mit Zitat antworten Zitat
Nic2012

Registriert seit: 2. Mai 2012
62 Beiträge
 
#10

AW: Breakpoints in D7 nicht erreichbar

  Alt 9. Sep 2013, 15:37
Zitat:
Hast Du vielleicht mal Code aus dem Internet direkt in die Unit kopiert? Dann kann es an dieser Stelle auch zu Störungen kommen.

Dann schaue Dir doch die Stelle ab der die Breakpoints nicht mehr funktionieren mal genauer an. Ggf. Codeteil entfernen und prüfen, ob es dann funktioniert.
Oh, da sind zuviele Abhängigkeiten zu anderen Units vorhanden. Da müsste ich die ersten 80% vom Code entfernen. Wie gesagt nur die letzten 20% lassen sich debuggen.

Der gesamte Code dieser DM funktioniert fehlerfrei zur Laufzeit, aber eben keine Breakpoints. Ich habe nachgezählt aufgrund der TSmartQueries gehen mehr als 2500 Zeilen auf das Konto der Deklaration der Felder. Ist das zuviel für den Debugger ?

PS: {$D+} prophylaktisch hat nicht geholfen, obwohl einige 3rd-Party Units dabei sind, die {$D-} schalten.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 19:23 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