Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi Debugger springt (https://www.delphipraxis.net/206405-delphi-debugger-springt.html)

t2000 17. Dez 2020 16:12

Delphi Debugger springt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wir haben ein merkwürdiges Verhalten im Delphi Debugger.

Eine IF-Abfrage, begin end, und 2 Anweisungen dort enthalten.
Delphi-Quellcode:
if sku <> '' then begin
  Zeile_1;
  Zeile_2;
end
Beim debuggen mit F7/F8 springt der Debugger so:
IF-Zeile
Zeile_2
Zeile_1
Zeile_2

Wobei die Funktion in Zeile_2 (wird zweimal angesprungen) beim ersten Mal nicht ausgeführt wird.

Ich hänge mal ein Screeshot mit dem ASM-Code an. Dort sieht man genau das, was der Debugger auch zeigt:
Zeile 518 if ...
Zeile 520 Funktion transfer ...
Zeile 519 id := ...
Zeile 520 Funktion transfer ...

Leider ist mein Assembler so stark eingerostet, dass ich mit dem Code nicht mehr viel anfangen kann.

Kann mir jemand das Verhalten erklären?

Danke und VG
Thomas

Screenshot: https://www.delphipraxis.net/attachm...1&d=1608221483

himitsu 17. Dez 2020 18:50

AW: Delphi Debugger springt
 
Hier wird einfach in den Debuginfos etwas "unglücklich"
Assembler-ProgrammcodePosition -> Pascal-CodeZeile

Oft passiert das gern bei Generics, wo vom Compiler "zusätzlicher" Code generiert wurde, welcher nicht direkt eine Codezeile besitzt.
Auch in For-Schleifen springt es oft gern so, wie man es manchmal nicht denkt.

In deinem Fall wird mit Records und Class-Operators rumgefummelt.



Heißt, der Code arbeit richtig, aber die Zuordnung zu den CodeZeilen passt nicht ganz, weswegen es "nur" komisch aussieht.

t2000 17. Dez 2020 19:22

AW: Delphi Debugger springt
 
Ja, ich hab mir schon sowas gedacht. Im Hintergrund ist die JSON Unit von Andreas Hausladen. Und die macht so einiges.
Mein erster Blick war auch auf die "Optimierung" in den Compilereinstellungen, aber die war schon aus.
Laufen tut es jedenfalls.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.

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