Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi hält an nicht vorhandenen Breakpoints (https://www.delphipraxis.net/104035-delphi-haelt-nicht-vorhandenen-breakpoints.html)

HERMES 26. Nov 2007 13:18


Delphi hält an nicht vorhandenen Breakpoints
 
Hallo zusammen,

ich habe momentan ein größeres Projekt, das ich noch mit Delphi 7 bearbeiten muss. Leider passiert es immer wieder, dass der Debugger an stellen anhält, an denen es keinen Breakpoint gibt. Es tritt aber auch kein Fehler auf.

Man kann das Problem umgehen indem man soviele leerzeilen einfügt, dass keine sinnvoller Programmcode in der Zeile mit dem "Haltepunkt" steht. Oder man löscht alle Dateien zu diesem Projekt ( nicht die Units ), erstellt ein neues Projekt und fügt wieder die Units hinzu.

Allerdings sind beides keine wirklichen Lösungen, und es kostet viel Zeit sich immer damit rumzuärgern. Kennt jemand eine Lösung? Oder weis jemand wo delphi 7 seine Breakpoints abspeichert?


mfg

Phoenix 26. Nov 2007 13:25

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Lösche mal alle DCU's zu dem Projekt und erstelle es komplett neu.
Manchmal baut der Linker mist mit alten DCU's, die eigentlich neu erstellt hätten werden sollen, es aber nicht wurden.

HERMES 26. Nov 2007 13:34

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Hab ich schon öfters versucht, hat aber nicht geholfen.

ken_jones 26. Nov 2007 13:52

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Öffne doch mal die *.pas Dateien mit einem "normalen" Texteditor (PSPad, etc.) und prüfe ob wirklich alle Zeilen mit einem CR/LF abgeschlossen wurden.
So ein komisches Verhalten hatte ich seinerzeit mit einem PAS File, welches im Code ein Paar CR (ohne LF) Zeilen drin hatte. Die Delphi IDE hat diese Zeilen nie angezeigt.

hoika 26. Nov 2007 13:54

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Hallo,

öffne die betreffende Unit mit Notepad (nicht WordPad).

Suche nach verdächtigen Stellen (meistens schwarze Rechtecke),
die müssen raus. Abspeichern, das wars.

Das sind "falsche" Zeilenumbrüche (#13 statt #13#10).

Die IDE sieht darüber hinweg, der Debugger nicht.

Woher die kommen ?
1. Code aus dem Netz gesaugt.
2. Ein paar VCS erzeuge sowas.
3. tja ...


Heiko

shmia 26. Nov 2007 13:57

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Dein Sourcecode enthält Zeichen (z.B. ASCII 129 = "unechtes" Leerzeichen ), die den Debugger durcheinander bringen.
Die passiert meistens dann, wenn man Code aus einem Browserfenster und einer Hilfedatei kopiert.
Auch überlange Zeilen, können zum Problem werden

Abhilfe:
den uralten Editor Edit.exe in einer DOS-BOX starten und die Unit öffnen.
Code:
C:\> edit C:\test\testunit.pas
Kleine Änderung vornehmen, ans Dateiende springen und speichern.

HERMES 26. Nov 2007 14:46

Re: Delphi hält an nicht vorhandenen Breakpoints
 
So wie ich das sehe, sind da keine Zeichen die da nicht hingehören. Und selbst wenn, das Verhalten spricht eher gegen so etwas. Um es zu verdeutlichen, nehmen wir mal an ich habe folgenden Code:

200: CallTest1(aaa);
201: CallTest2;
202: result := GetTest3(aaa);

und Delphi unterbricht immer in Zeile 201.

Wenn ich jetzt hingehe und eine neue Zeile vor 200 ( egal wieviel davor ) einfüge, dann hält Delphi in der früheren Zeile 200 an.
Wenn ich aber Zeile 201 zu einer leeren Zeile mache, dann hält Delphi nicht mehr, klar, ist ja auch kein Code in Zeile 201.

Also es sieht so aus, als noch irgendwo ein Breakpoint gespeicht wäre, der aber von nder IDE nicht angezeigt wird.

mfg

HERMES 26. Nov 2007 15:07

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Hallo nochmals,

ich habe das Problem gefunden! Delphi speichert seine Breakpoints in der ProjektGruppe.dsk. Das ist eigentlich eine ini Datei, dort gibt es einen Abschnitt "Breakpoints", indem zu jeder Unit der Projektgruppe die Breakpoints gespeichert werden. Ich vermute mal, dass es CVS liegt, bzw. an den unterschiedlichen Arbeitsverzeichnissen, dass Delphi da irgendwie durcheinander kommt und bestimmte Breakpoints nicht mehr anzeigt, der Debugger aber dennoch dort anhält.

danke.

shmia 26. Nov 2007 15:08

Re: Delphi hält an nicht vorhandenen Breakpoints
 
Zitat:

Zitat von HERMES
So wie ich das sehe, sind da keine Zeichen die da nicht hingehören. Und selbst wenn, das Verhalten spricht eher gegen so etwas.

Bist du dir wirklich sicher, dass die Breakpoints nicht verschoben sind?!
Der bekannte Effekt ist so, dass irgenwo in der Mitte des Sourcecode die Breakpoints nicht mehr zum Source passen.
Normalerweise sollte auf jedem "Begin" und jedem "end" einer Methode ein Breakpoint möglich sein.
Lösch doch mal ALLE Haltepunkte (Ctrl+Alt+B)

Es gibt auch noch den Effekt, dass die IDE auch ohne dass man ein Breakpoint gesetzt hat im CPU-Fenster stoppt.
Ursache ist dann, dass in manchen System-DLLs Aufrufe an DebugBreak() vergessen wurden.
Dann einfach ignorieren und F9 drücken.
Sollte dies massiver auftreten, gibt es auch die Möglichkeit die Funktion DebugBreak() zur Laufzeit zu patchen.

torud 10. Sep 2011 10:51

AW: Re: Delphi hält an nicht vorhandenen Breakpoints
 
Zitat:

Zitat von HERMES (Beitrag 707383)
Hallo nochmals,
ich habe das Problem gefunden! Delphi speichert seine Breakpoints in der ProjektGruppe.dsk. Das ist eigentlich eine ini Datei, dort gibt es einen Abschnitt "Breakpoints", indem zu jeder Unit der Projektgruppe die Breakpoints gespeichert werden. Ich vermute mal, dass es CVS liegt, bzw. an den unterschiedlichen Arbeitsverzeichnissen, dass Delphi da irgendwie durcheinander kommt und bestimmte Breakpoints nicht mehr anzeigt, der Debugger aber dennoch dort anhält.
danke.

Hallo,

ich weiss, der Thread ist schon Uralt, aber ich habe seit gestern abend genau das gleiche Problem und finde die Datei ProjektGruppe.dsk nicht. Ich nutze Delphi 7. Ich habe hier im Forum schon gesucht und nur Messages gefunden, die sich darauf beziehen, dass was mit der ntdll nicht passt. Diese Meldung habe ich aber in dem CPU-Fenster nicht. Ich weiss nur, dass ich VOR dem Problem einen Breakpoint gesetzt habe und seitdem das Problem besteht, obwohl ich den Breakpunkt wieder entfernt habe, bzw. den Code, auf den sich der Breakpoint bezog verschoben habe. Vielleicht ist das auch die Ursache des Problems!?

jaenicke 10. Sep 2011 13:46

AW: Delphi hält an nicht vorhandenen Breakpoints
 
Steht denn noch einer in der Liste der Haltepunkte? Oder ist der vielleicht weg, wenn du einen neu setzt und dann in der Haltepunktliste über das Kontextmenü alle löschst?

torud 10. Sep 2011 23:49

AW: Delphi hält an nicht vorhandenen Breakpoints
 
Hallo,

ich habe Ctrl+Alt+B ausgeführt und die Liste war leer. Auch habe ich diverse Breakpoints gesetzt und gelöscht. Das Porblem besteht weitherin.

jaenicke 11. Sep 2011 00:09

AW: Delphi hält an nicht vorhandenen Breakpoints
 
Ich habe es gerade kurz ausprobiert.

Wenn bei dir die .dsk Datei (mit dem gleichen Namen wie die .dpr des Projekts) nicht existiert, werden die Haltepunkte auch nicht gespeichert. Dafür ist auch die Einstellung unter Tools --> Optionen --> Autospeichern notwendig. Wenn da keine Häkchen gesetzt sind, passiert das auch nicht. Heißt: Wenn du Delphi startest und das Projekt wieder lädst, sind die Haltepunkte weg.

Gespeichert werden diese Haltepunkte unter der Sektion [Breakpoints] in eben der genannten .dsk Datei.

Es kann aber passieren, dass durch einen Fehler im Programm ein Haltepunkt ausgelöst wird, auch wenn keiner gesetzt ist. Das Problem ist nur, dass Delphi 7 das offenbar noch nicht anzeigt, ich habe es jedenfalls nicht gefunden. Unter ein wenig aktuelleren Delphiversionen steht das im Ereignislog einfach drin ("Nicht-Benutzerhaltepunkt bei ...").

// EDIT:
Bleibt das Programm denn an einer Stelle im Quelltext normal stehen?

torud 11. Sep 2011 09:01

AW: Delphi hält an nicht vorhandenen Breakpoints
 
Also ich habs mir nochmal angesehen und ins CPU-Fenster springt er mit immmer nur, wenn ich scheinbar mit dem betreffenden Programm eine bestimmte Datei öffne. Es scheint mir also doco eher eine berechtigte Fehlermeldung zu sein. Ich habe zwar vorher nie eine solche gesehen und er springt auch nicht im Quelltext an einem speziellen Punkt, aber ich versuche trotzdem mal den Fehler in meinem Code oder der Datei einzugrenzen.

himitsu 11. Sep 2011 09:42

AW: Delphi hält an nicht vorhandenen Breakpoints
 
Ein
Delphi-Quellcode:
INT 3
ist im CPU-Fenster nicht zu finden, an der Haltestelle?

jaenicke 11. Sep 2011 09:52

AW: Delphi hält an nicht vorhandenen Breakpoints
 
Du kannst einmal versuchen FastMM einzubinden und in den FullDebugMode zu schalten. Vielleicht hast du einfach ein Speicherproblem. (Durch das z.B. der eben genannte Assemblerbefehl in ausgeführten Code geraten ist.)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr.

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