![]() |
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 |
Re: Debuggen ohne Haltepunkte wie
Zitat:
Zitat:
...:cat:... |
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 |
Re: Debuggen ohne Haltepunkte wie
Hallo sakura u. DerDan
Das mit dem Projekt erzeugen habe ich schon mehrmals Probirt aber leider ohne erfolg. Zitat:
Gruss Tau |
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 |
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! |
Re: Debuggen ohne Haltepunkte wie
Ich habe mal grad was zu dem Thema in die Codelib gepostet:
Titel: "Im Debugger anhalten ohne Breakpoint" Url: ![]() Ich hoffe es bringt Euch weiter |
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 |
Re: Debuggen ohne Haltepunkte wie
Hast du vielleicht an den Compileroptionen rumgespielt? Da gabs doch eine Option Debug-DCUs.
|
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. |
Re: Debuggen ohne Haltepunkte wie
Zitat:
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:
Nach i := 1; wird die nächste Zeile (s := IntToStr(i);) angesprungen. (gleiches Verhalten bei F8 und F7)
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 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:
So kann man auch die RTL und die VCL von Delphi debuggen. (Vorausgesetzt man hat den Quellcode im $(DELPHI)/Source Verzeichnis)
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; 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 |
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