Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Breakpoint stoppt in falscher Methode (https://www.delphipraxis.net/216492-breakpoint-stoppt-falscher-methode.html)

Hobbycoder 7. Jan 2025 10:53

Breakpoint stoppt in falscher Methode
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe hier ein sehr merkwürdiges Problem. In meinem (VCL D10.3)Programm habe ich eine Zugriffsverletzung und wollte deshalb mit Breakpoints auf die Suche gehen.

Schaut euch an dieser Stelle kurz das Bild an. Interessant ist hier, wo der Breakpoit sitzt, und welche Methode im Call-Stack angezeigt wird.
Zum Anlauf: Ich start das Programm und klicke dort aber nichts an. Dann wechsele ich in die IDE und setze den Breakpoint (könnte ich aber auch vor dem Start machen, das ist egal) auf einem "begin", was eigentlich ja gar nicht gehen sollte. Überhaupt, wie man im Quellcode sieht sie die berücksichtigten Zeilen, wo man Breakpoints setzen könnte etwas willkürlich mit dem blauen Punkt versehen. Wenn ich im Call-Stack auf den obersten Eintrag doppelklicke, dann lande ich auch an der Position, die im Quellcode markiert ist.

Das wirkt für mich so, als wenn der angezeigte Quellcode nicht mit dem übereinstimmt, was der Debugger auswertet. Nur warum?

Ich habe schon das Projekt bereinigt und die IDE neu gestartet. Verhalten bleibt.

Was mir schon vorher aufgefallen ist, hab ich aber ignoriert, ab einer bestimmten Zeile in der Main.pas (die genaue Zeile müsste ich noch prüfen) funktioniert die Code-Vervollständigung für die eigenen Variablen, Classen, Konstanten nicht mehr.

Hat einer eine Idee, wir ich dem auf die Spur kommen könnte?

Klaus01 7. Jan 2025 10:56

AW: Breakpoint stoppt in falscher Methode
 
.. bleibt das Problem nach einem neuen build/erzeugen bestehen?

Grüße
Klaus

Hobbycoder 7. Jan 2025 11:02

AW: Breakpoint stoppt in falscher Methode
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, leider.

Er landet auch direkt nach dem Start der Anwendung in der vonScanner1Click-Methode.

Ich hab noch mal einen Screenshot nach den Neu Erzeugen vor dem Start. Da zeigt die IDE sogar eine möglichen Breakpoint in auskommentierten Quelltext an.

MyRealName 7. Jan 2025 11:07

AW: Breakpoint stoppt in falscher Methode
 
Der Debugger findet zuerst veraltete debug-dcus. Such mal, ob dcus mit gleichem Namen noch irgendwo liegen und lösch die mal

Hobbycoder 7. Jan 2025 11:17

AW: Breakpoint stoppt in falscher Methode
 
Zitat:

Zitat von MyRealName (Beitrag 1544886)
Der Debugger findet zuerst veraltete debug-dcus. Such mal, ob dcus mit gleichem Namen noch irgendwo liegen und lösch die mal

Das Problem habe ich lediglich in der main.pas. So heißen aber bei mir immer die Main-Forms, von daher wird es sehr viele main.dcu's geben. Jedoch liegen die immer woanders.
Ich habe jetzt mal alle DCU's im Win32\Debug gelöscht. Fehler bleibt. Dann habe ich das Projekt mal auf Win64 compiliert, gleiches Problem.
In anderen Units habe ich das Problem nicht.

Hobbycoder 7. Jan 2025 11:42

AW: Breakpoint stoppt in falscher Methode
 
Das Problem vergrößert sich.

Nun habe ich eine Procedure
Delphi-Quellcode:
procedure TfrmMain.VorlagenfrZeiten1Click(Sender: TObject);
begin
  frmVorlageUhrzeiten.mmoUhrzeiten.Lines.Assign(ZeitenList);
  if frmVorlageUhrzeiten.showModal=mrOK then
  begin
    ZeitenList.Assign(frmVorlageUhrzeiten.mmoUhrzeiten.Lines);
    SaveZeiten;
  end;
end;
wo das showModal nicht ausgewertet wird. Der Button in der frmVorlageUhrzeiten hat definitiv die Eigenschaft ModalResult=mrOK. Zusätzlich habe ich bei dessen OnClick das nochmal per Code einfügt.

Wenn ich im obigen Code einen Breakpoint setze, wird dieser nicht berücksichtigt. Wahrcheinlich wegen dem Problem in Post #1, und der debugger setzt den breakpoint ganz woanders.

Sherlock 7. Jan 2025 12:25

AW: Breakpoint stoppt in falscher Methode
 
Vielleicht ist ein nicht sichtbares Steuerzeichen irgendwie im Code gelandet. Sowas verursacht dann gerne mal mysteriöse Dinge. Versuch mal den Code komplett zu bereinigen, am einfachsten geht das durch die Codeformatierung.

bnreimer42 7. Jan 2025 12:42

AW: Breakpoint stoppt in falscher Methode
 
Prüf mal die Zeilenumbrüche!

Ich hatte mal soetwas und habe im Nitepad++ die Zeilenumbrüche explizit gesetzt für die PAS-Datei und dann war alles gut. (Waren vorher nicht einheitlich, womit der Editor zu recht kommt, der Debugger nicht)

jaenicke 7. Jan 2025 12:47

AW: Breakpoint stoppt in falscher Methode
 
Benenne deine Unit testweise einfach in einen vollkommen eindeutigen Namen um. Dann kann es keine herumliegenden DCUs geben und da das das Hauptfenster ist, sollte es ja auch keine weiteren Units geben, die dieses referenzieren. Insofern sollte die Umbenennung ja schnell gehen.

An den blauen Punkten kannst du nach dem Ausführen aber auch sehen, ob die verwendete DCU zum Quelltext passt. Du kannst ja einfach ein paar Leerzeichen einfügen, dann sollten sich die Punkte entsprechend verschieben.

Und um zu sehen, ob dein gerade geänderter Quelltext verwendet wird, bietet sich ein ShowMessage an, das dann auch gleich das Ergebnis des ShowModal-Aufrufs anzeigen kann.

Die genannten Punkte zu Steuer- oder Leerzeichen sind auch gute Hinweise.

Hobbycoder 7. Jan 2025 13:31

AW: Breakpoint stoppt in falscher Methode
 
Zitat:

Zitat von Sherlock (Beitrag 1544894)
Vielleicht ist ein nicht sichtbares Steuerzeichen irgendwie im Code gelandet. Sowas verursacht dann gerne mal mysteriöse Dinge. Versuch mal den Code komplett zu bereinigen, am einfachsten geht das durch die Codeformatierung.

Die Formatierung hat's gebracht. Danach läuft scheinbar alles und ich kann auch wieder überall Breakpoints setzen. Sowas hatte ich bisher noch nie.

Vielen Dank. Das hat mir den Tag gerettet, da ich mit dem Projekt grad fast fertig bin und ich gleich zum Kunden wollte um es mit ihm durchzusprechen.

Allen anderen auch vielen Dank für eure Zeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Seite 1 von 2  1 2      

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