Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Debuggen ohne Haltepunkte wie (https://www.delphipraxis.net/35023-debuggen-ohne-haltepunkte-wie.html)

Tau 1. Dez 2004 16:06


Debuggen ohne Haltepunkte wie
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute

hab mal eine ganz Blöde Frage, gib es eine
Begrenzung um Delphi Code Editor für die Haltepunkte ?

Habe folgendes Problem in meinem Projekt das ab einer
gewissen Stelle keine Punkte mehr angezeigt werden am Linken Rand.


H I L F E :wall:

Gruss
Tau

sakura 1. Dez 2004 16:09

Re: Debuggen ohne Haltepunkte wie
 
Zitat:

Zitat von Tau
hab mal eine ganz Blöde Frage, gib es eine
Begrenzung um Delphi Code Editor für die Haltepunkte ?

Nein :-)

Zitat:

Zitat von Tau
Habe folgendes Problem in meinem Projekt das ab einer
gewissen Stelle keine Punkte mehr angezeigt werden am Linken Rand.

Versuche noch einmal: Menu->Projekt->Neu Erstellen, dann sollte alles wieder passen.

...:cat:...

DerDan 1. Dez 2004 16:12

Re: Debuggen ohne Haltepunkte wie
 
Oder wir der Code an dem du die Punkte ewartest evtl weg - optimiert?

Das passiert immer dann, wenn du eine Funktion hast, die niemals aufgerufen wird und delphi das merkt!

dann wird dafür kein Code erzeugt und es gibt keine Punkte und keine möglichkeit haltepunkte zu setzen


DerDan

Tau 1. Dez 2004 16:39

Re: Debuggen ohne Haltepunkte wie
 
Hallo sakura u. DerDan

Das mit dem Projekt erzeugen habe ich schon
mehrmals Probirt aber leider ohne erfolg.


Zitat:

Das passiert immer dann, wenn du eine Funktion hast, die niemals aufgerufen wird und delphi das merkt!

dann wird dafür kein Code erzeugt und es gibt keine Punkte und keine möglichkeit haltepunkte zu setzen
Delphi läst mir bei ungefähr 7.000 Zeil die Punkte Weg


Gruss
Tau

DerDan 1. Dez 2004 16:47

Re: Debuggen ohne Haltepunkte wie
 
Oha

ich meine es kann dennoch stimmen, das für diese Zeilen keinen Code erzeugt wird.

was auch sein kann ist, das du das Debuggen in deinem Projekt ausgeschaltet hast.

schau doch mal unter Projekt->Optionen->Compiler->Debuggen

und schalt dor alle Häckchen ein.

dannach musst allerdings das Projekt nochma neu erzeugen

DerDan

shmia 1. Dez 2004 16:47

Re: Debuggen ohne Haltepunkte wie
 
Dein Problem kenne ich. :wall:
Ursache sind Zeichen, die die Zeilenzählung des Compilers durcheinander bringen.
Somit passen potentielle Haltepunkte (blau) und Sourcecodezeilen nicht zueinander.
Drei Möglichkeiten:
* suche die Stelle, ab der die Haltepunkte falsch liegen, und lösche den Code dort.
* nimm einen Editor, der den Sourcecode bereinigt (z.B. Edit.exe von MS-DOS 6)
* schreib dir ein kleines Programm, dass die PAS-Datei in eine Stringliste einliest und ungültige Zeichen entfernt. (bitte dann auf DP als OpenSource freigeben)

Ungültige Zeichen sind Zeichen < 32 oder Zeichen 160 (sieht aus wie ein Blank, ist aber keines).
Ausserdem: jede Zeile muss mit CR+LF abgeschlossen sein, nur CR oder LF alleine macht Probleme!

MaBuSE 1. Dez 2004 16:51

Re: Debuggen ohne Haltepunkte wie
 
Ich habe mal grad was zu dem Thema in die Codelib gepostet:

Titel: "Im Debugger anhalten ohne Breakpoint"
Url: http://www.delphipraxis.net/internal...ct.php?t=40707

Ich hoffe es bringt Euch weiter

Tau 2. Dez 2004 08:39

Re: Debuggen ohne Haltepunkte wie
 
Hallo Leute

Danke für die Tipps

habe alles ausprobiert leider ohne Erfolg.

Sogar alle Code Teile in allen Prozeduren auskommentiert nichts.

Mit dem Ergebnis das nur mehr ein halte Punkt sicht
bar wahr und der wahr ganz am Schluss der Datei.

keine Ahnung wo der beschissene Fehler Steckt ( *.pas oder *.dfm )

Fazit musste die Sicherung wieder herstellen. 5 Tage im .....sch. :wall:


Gruss
Tau

jim_raynor 2. Dez 2004 08:53

Re: Debuggen ohne Haltepunkte wie
 
Hast du vielleicht an den Compileroptionen rumgespielt? Da gabs doch eine Option Debug-DCUs.

Jasocul 2. Dez 2004 09:22

Re: Debuggen ohne Haltepunkte wie
 
Schon mal probiert ein ShowMessage einzubauen? Vielleicht ist es ja wirklich rausoptimiert?
Bist du dir sicher, dass du mit der richtigen Unit arbeitest? Ich hatte mal das Problem, dass ich mit einer Sicherungskopie gearbeitet habe. Der Compiler hat aber das Original zum Compilieren benutzt. Da waren dann bei mir auch keine Haltepunkte im Source mehr möglich.

MaBuSE 2. Dez 2004 10:22

Re: Debuggen ohne Haltepunkte wie
 
Zitat:

Zitat von jim_raynor
Hast du vielleicht an den Compileroptionen rumgespielt? Da gabs doch eine Option Debug-DCUs.

Die Option "Mit Debug DCUs" hat aber eine andere Wirkung.

Delphi 7 Onlinehilfe
Mit Debug-DCUs
Die Debug-Versionen der CLX werden in die Anwendung gelinkt. Die DCU-Dateien enthalten Debugging-Informationen und sind mit Stack-Rahmen compiliert. Ist diese Option aktiviert, fügt der Compiler automatisch den Debug-DCU-Pfad (Registerkarte Allgemein von Tools/Debugger-Optionen) am Anfang des Suchpfades auf der Registerkarte Verzeichnisse/Bedingungen des Dialogfensters Projektoptionen ein.

Das ist so aber nicht ganz richtig.

Es funktioniert natürlich nicht nur mit clx sondern auch mit vcl!!!

Und wozu braucht man das ???

Ganz einfach:
Normalerweise wird nur der eigene Code debuggt, manchmal ist es aber nützlich auch in die vcl selbst zu debuggen. Ein Beispiel mit ausgeschalteter "mit Debug-DCUs":
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
  s: string;
begin
  i := 1; // <- hier Breakpoint setzen und dann F7 oder F8 drücken
  s := IntToStr(i);
  Caption := s;
  i := 2;
  Caption := IntToStr(i);
end;
Nach i := 1; wird die nächste Zeile (s := IntToStr(i);) angesprungen. (gleiches Verhalten bei F8 und F7)
Nach s := IntToStr(i); wird die nächte Zeile (Caption := s;) angesprungen. (gleiches Verhalten bei F8 und F7)
...
Das ist das normale Debuggen.
Die Tasten F8 (Gesamte Routine) F7 (gesamte Anweisung) oder Shift+F7 (nächste Quelltextzeile) machen hier keinen Unterschied.

Wenn aber die Option "mit Debug DCUs" angeschaltet ist, ist das Verhalten etwas anders:

Verhalten bei F8:
Nach i := 1; wird die nächste Zeile (s := IntToStr(i);) angesprungen.
Nach s := IntToStr(i); wird die nächte Zeile (Caption := s;) angesprungen.

Verhalten bei F7:
Nach i := 1; wird die nächste Zeile (s := IntToStr(i);) angesprungen.
Nach s := IntToStr(i); wird in die Funktion IntToStr gesprungen.
Delphi-Quellcode:
function IntToStr(Value: Integer): string;
//  FmtStr(Result, '%d', [Value]);
asm
        PUSH   ESI    // <- hier wird hingesprungen !!!
        MOV    ESI, ESP
        SUB    ESP, 16
        XOR    ECX, ECX      // base: 0 for signed decimal
        PUSH   EDX           // result ptr
        XOR    EDX, EDX      // zero filled field width: 0 for no leading zeros
        CALL   CvtInt
        MOV    EDX, ESI
        POP    EAX           // result ptr
        CALL   System.@LStrFromPCharLen
        ADD    ESP, 16
        POP    ESI
end;
So kann man auch die RTL und die VCL von Delphi debuggen. (Vorausgesetzt man hat den Quellcode im $(DELPHI)/Source Verzeichnis)
Bei der Enterprise und Architect ist der quellcode dabei, bei der Proffessional Version weiß ich es nicht. Bei der Personal ist er nicht dabei!

Ich hoffe das hilft Euch beim Debuggen :-)

Ist übrigens sehr lehrreich durch die VCL zu debuggen und zu schauen wie hat das denn Bortland gemacht.

have fun

PRehders 2. Dez 2004 10:41

Re: Debuggen ohne Haltepunkte wie
 
Hallo zusammen,

ich hatte dieses Verhalten bei meinem D5 auch schon einmal, und es hatte (letztendlich) damit zu tun, dass ich mit Copy&Paste aus einer anderen Unit Code reingebastelt hatte.

Danach waren die sichtbaren Codezeilen und die Breakpoints gegeneinander verschoben und ich konnte es nicht anders korrigieren, als die eingefügten Zeilen wieder zu entfernen (eigentlich hatte ich nur eine Leerzeile entfernt und gesehen, dass sich Breakpoints und zugehöriger Code wieder "annäherten"; danach habe ich dann alles neue wieder rausgeschmissen und manuell eingefügt).
Da ich damals etwas unter Druck stand, habe ich das nicht weiter verfolgt bzw. reproduzierbar gemacht.

Kann es sich bei Dir auch um eine solche Verschiebung handeln? Hast Du evtl. größere Codeteile rumgeschoben, als Breakpoints gesetzt waren? Deine Schilderung erinnert mich sehr an mein damaliges Rumgestochere.

Ich nehme das aber mal als Anlass, das alte Projekt hervorzukramen und zu versuchen, das zu reproduzieren...

Viel Glück noch.

Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz