Entwickler-Ecke
Programmierwerkzeuge - Haltepunkte an der falschen Stelle
svennissel - Do 25.08.05 08:16
Titel: Haltepunkte an der falschen Stelle
[EDIT]
Danke für die schnelle Antwort.
Lösung: .pas Datei mit WordPad öffnen und speichern.
[/EDIT]
Hallo Leute,
ich habe in manchen Units ein paar Probleme mit den Haltepunkten. Erst habe ich mich gewundert warum im Debug Modus nicht jeder Haltepunkt übernommen wird. Im Debug Modus sind links blaue Punkte, die alle möglichen Haltepunkte aufzeigen. Doch diese möglichen Haltepunkte stehen nicht in Verbindung mit dem Quellcode. Ich kann Haltepunkte teilweise in Leerzeilen setzen und teilweise springt das Programm wärent der Ausfürung in Zeilen zurück obwohl es dort keine Schleifen gibt und ich erstrecht keine GOTO Anweisungen benutze.
Ich habe mehrmals ein neues Build gemacht und unter den Compiler Optionen sind alle Runtime errors und alle Debuggin (bis auf Definitions only) Hächin ausgewählt.
[EDIT]
Den geichen Fehler habe unter
http://www.delphipages.com/threads/thread.cfm?ID=141976&G=141976 gefunden, doch eine lösung ist auch dort nicht
[/EDIT]
Malakim - Di 30.08.05 15:41
Hallo,
ich häng mich hier mal rein denn ich habe ien ganz ähnliches Problem, das sich nicht auf oben beschriebene Weise lösen lässt.
Bei mir Ignoriert Delphi5 einen Haltepunkt restlos. Ich habe zwei Programversionen, bei der einen gehts, bei der nächsten nicht (die wo es nicht geht ist die neuere). Ich habe die codes mit Winmerge verglichen und konnte wirklich keinen Grund für das Verhalten finden. Ich habe die betroffen *.pas Dateien im Wordpad geöffnet und gespeichert, aber auch das brachte keine Linderung.
Der Haltepunkt liegt in einer Timerfunktion und sollte zyklisch angesprungen werden.
Wo kann ich noch suchen?
Ich vergaß: Beim starten wird der Haltepunkt mit einem Häcken versehen. Die blauen Punkte am Rand werden unerfreulicherweise nicht überall gesetzt.
Gruß
Elmar
uall@ogc - Di 30.08.05 15:50
delphi version? code? screenshot? :)
Malakim - Di 30.08.05 15:52
Code?
die ganzen 2 MB ?? Alle 45 Units ?
Meine Firma wirds verbieten ;)
Delphi5 und Delphi7 machen beide Probleme. Auf Delphi5 ists geschrieben.
Wovon soll ich einen Screenshot machen?
Vom nicht verwendeten Haltepunkt? Was ist da zielführend?
Motzi - Di 30.08.05 15:54
Funktionieren die Haltepunkte im restlichen Code, oder nur grad bei diese Timer-Funktion nicht?
uall@ogc - Di 30.08.05 15:57
also
wenn da nen häcken ist (wie du sagst) dann kompiliert delphi das in die exe und der haltepunkt kann theoretisch angesprungen werden
die blauen punkte sagen was alles kompiliert wird, hast eine leere funktion wird diese z.b. nicht mitkompiliert
es müssen also in der ganzen timer funktion blaue punkte + der rote haltepunkt mit häkchen sein.
gibt nru noch die möglichkeit das der timer nie aufgrufen wird :) mal ne messagebox reingepackt und geschaut ob die zu sehen ist.
woltle nur mal nen screenshot sehen wen du gestartet hast, vn einem BP der angelbich nicht funktioniert, bzw den code der eventl davor ist (abfrage die nie wahr wird etc.)
Malakim - Di 30.08.05 15:58
Ich habe einen Screenshot gemacht. Gerade in der Main funktionieren Haltepunkte nicht immer.
Der Screenshot zeigt die möglichen Haltepunkte die irgendwo einfach anfangen und den Restcode ignorieren.
Malakim - Di 30.08.05 16:03
uall@ogc hat folgendes geschrieben: |
also
wenn da nen häcken ist (wie du sagst) dann kompiliert delphi das in die exe und der haltepunkt kann theoretisch angesprungen werden
die blauen punkte sagen was alles kompiliert wird, hast eine leere funktion wird diese z.b. nicht mitkompiliert |
Häckchen ist da, aber keine blauen Punkte !!
Wie gesagt der Code an genau der Stelle ist nicht neu sondern älter und achja das Proggi läuft wenn ich die Integrierte Fehlersuche abschalte. Nur eben Debuggen geht nicht.
uall@ogc hat folgendes geschrieben: |
es müssen also in der ganzen timer funktion blaue punkte + der rote haltepunkt mit häkchen sein. |
nein, Der Screenshot zeigt das die blauen Punkte einfach irgendwo einsetzen.
uall@ogc hat folgendes geschrieben: |
gibt nru noch die möglichkeit das der timer nie aufgrufen wird :) mal ne messagebox reingepackt und geschaut ob die zu sehen ist. |
Wird aufgerufen! Muß er sonst geht da garnix. Ohne die integrierte Fehlersuche läufts ja auch ...
uall@ogc hat folgendes geschrieben: |
woltle nur mal nen screenshot sehen wen du gestartet hast, vn einem BP der angelbich nicht funktioniert, bzw den code der eventl davor ist (abfrage die nie wahr wird etc.) |
Ist geliefert :)
uall@ogc - Di 30.08.05 16:03
wie schon gesagt könnte es hier dran liegen
http://www.delphi-forum.de/viewtopic.php?t=29205
die blauen punkte stimmen nciht mit den quelltextzeilen überein
kann sein das die weiter nach oben / unten gehörten kannst ja mal schaun ob die irgendwie druch verschieben übereinstimmen könnten - ansonsten mal die pas mit notepad öffnen und schaun ob die zeilenumrüche stimmen irgendwo sollte da so einb kästchen sein [] was kein ganze zeilenumbruch ist :)
Malakim - Di 30.08.05 16:05
Hab die Notepad Nummer vor dem posten bereits gemacht ... kein Erfolg :(
Delete - Di 30.08.05 16:06
Alle DCUs mal gelöscht und neu erstellen lassen?
Malakim - Di 30.08.05 16:09
Das es an irgendwas anderem liegt kann nicht sein?
Eine Compiler/Debugger Einstellung, ein fehlender Pfad oder sowas??
Da stecken zwei volle Tage Arbeit drin die ich in die Tonne kloppen kann sonst :(
Malakim - Di 30.08.05 16:10
Luckie hat folgendes geschrieben: |
| Alle DCUs mal gelöscht und neu erstellen lassen? |
Ja, habe auch die Projektobtionen DCUs betreffend hin und hergeändert ... nix das komische ist ich habe eine Version die rennt, allerdings ohne die Änderungen der letzten zwei Tage :(
Aber WinMerge hat da auch nichts gezeigt woran es leigen könnte ...
Malakim - Di 30.08.05 16:13
Hier noch ein Screenshot vom ignorierten Haltepunkt ... man sieht gut den Mangel an blauen Punkten am Rand
Sinspin - Di 30.08.05 18:17
ich kenne das problem auch und habe mich schon einigemale fast wahsinnig gesucht bis mir aufgefallen ist woran das wiedermal liegt.
der grund ist, das nach änderungen am quelltext dieser zwar übersetzt wird aber die debuginformationen nicht angepasst werden. manchmal wird auch garnix übersetzt. nur der interne zustand zum erfassen der letzten änderung wird überschrieben, so das man compilieren kann so viel man will ohne das sich noch wirklich was tut.
am häufigsten ist der fehler bei mir aufgetreten wenn der rechner mit einem geöffneten delphi in den ruhezustand gegangen ist. beim fortsetzen kam es dann zu diesem fehler.
die einfachste lösung ist das ganze projekt erneut zu übersetzten indem du in delphi projekt/... erzeugen auswählst. normalerweise stimmt dann alles wieder. hilft es auch nicht machst du delphi zu und löschst alle zum projekt gehörenden .dcu dateien. nach einen neustart von delphi werden beim compilieren dann alle .dcu neu erstellt und der fehler müsste auch weg sein.
eventuell kann es aber auch sein das du das gleiche projekt in unterschiedlichen verzeichnissen liegen hast. und ein neues projektverzeichnis angelegt und einfach alle dateien kopiert hast. ist das der fall such mal im aktuellen verzeichnis nach einer datei mit der erweiterung .dsk. nachdem du delphi beendet hast löschst du die datei und startest delphi neu.
mehr fällt mir jetzt auch nicht ein.
Delete - Di 30.08.05 18:23
Malakim hat folgendes geschrieben: |
| Hier noch ein Screenshot vom ignorierten Haltepunkt ... man sieht gut den Mangel an blauen Punkten am Rand |
Ein eindeutiges Zeichen, dass diese Zeilen gar nicht erst kompiliert wurden.
Motzi - Di 30.08.05 20:46
Sinspin hat folgendes geschrieben: |
| eventuell kann es aber auch sein das du das gleiche projekt in unterschiedlichen verzeichnissen liegen hast. und ein neues projektverzeichnis angelegt und einfach alle dateien kopiert hast. ist das der fall such mal im aktuellen verzeichnis nach einer datei mit der erweiterung .dsk. nachdem du delphi beendet hast löschst du die datei und startest delphi neu. |
Ja, genau das ist mir auch schon öfters passiert..! Hab auf die schnelle vergessen den gespeicherten Desktop zu löschen, weshalb er die Files aus dem alten Verzeichnis öffnet. Mir ist es nicht aufgefallen, setz den Breakpoint, aber die ganze Datei wird nicht kompiliert und man kann daher auch nicht debuggen - kein Wunder, ist ja schließlich die falsche Datei. Und ganz misteriös kommt es einem dann vor, wenn man sogar was im Code ändert, aber das Programm ändert sich nicht..! ;)
Wäre auch meine nächste Empfehlung gewesen...
Aber wenn das alles nicht hilft, dann nimm einfach die letzte Version von vor 2 Tagen. Nachdem du ja eh WinMerge hast sollte es nicht so schwer sein die Neuerungen in die alte Version einzubauen, vielleicht funktioniert es ja dann.
Gruß, Motzi
Malakim - Mi 31.08.05 08:44
Hmmm,
also das Verzeichnis stimmt und die Unit wird auch zum Teil compiliert. Änderungen sind sichtbar, ich kann also z.B. etwas auf einem Memo ausgeben. Nur eben Debugging geht nicht und :!: nicht alle Änderungen werden mit compiliert. Alle oben beschriebenen Maßnahmen haben nichts gefruchtet.
Sollte ich herausbekommen woran es liegt poste ich das hier.
Danke für die Tipps
Gruß
Elmar
AXMD - Mi 31.08.05 09:13
Schon mal alles außer den pas, dpr und dfm-Dateien aus deinem Projektordner gelöscht?
AXMD
Malakim - Mi 31.08.05 09:55
Jep, habe alles schonmal gecleant.
Folgendes habe ch heute Morgen herausbekommen:
Beim erzeugen der Instanz...
Delphi-Quelltext
1:
| Instance := TComponent(InstanceClass.NewInstance); |
scheint irgendetwas schief zu laufen. Es sieht so aus als ob die initialisierung nicht richtig läuft und die Applikation deswegen auch nicht richtig läuft. Da habe ich mal folgende Fragen gibt es eine maximale Anzahl von Panels (etc) oder eine maximale Zeilen Anzahl in einer Unit oder sonst eine Beschränkung die dazu führen kann das die Initialisierung der Instanz schief läuft?
Meine Assambler Kenntnisse sind leider nicht so gut das ich hier wirklich zielführend beschreiben kann wo es schief läuft. Fakt ist das NACH der initalisierung die Instance leer ist und demnach das Programm ins nirgendwo läuft.
:roll:
Gruß
Elmar
Sinspin - Mi 31.08.05 17:20
Malakim hat folgendes geschrieben: |
Fakt ist das NACH der initalisierung die Instance leer ist und demnach das Programm ins nirgendwo läuft.
|
wenn das an dem wäre wie du schreibst, also das die instanz leer wäre würdest du das sehr schnell mitbekommen. das du da via kurzhinweis oder überwachter ausdrücke nix darin siehst hat einen anderen grund.
das die anzahl der elemente auf einem formular oder panel beschränkt ist möchte ich bezweifeln.
schalte mal unter tools/debugger-optionen/sprach-exceptions das "bei delphi exceptions stoppen" ein. vieleicht siehst du dann mehr.
Malakim - Mi 31.08.05 18:15
Ich nutze die Gelegenheit trotzdem gerade einiges mal in Frames umzusortieren.
die uMain ist mit 18000 Zeilen auch ein wenig mächtig geworden :)
Naja Problem ist noch nicht behoben oder gefunden aber beim umstrukturieren wirds sicher auffallen ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!