Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Rio Debugging Probleme mit Jedi JCL (https://www.delphipraxis.net/200397-rio-debugging-probleme-mit-jedi-jcl.html)

TurboMagic 16. Apr 2019 21:36

Rio Debugging Probleme mit Jedi JCL
 
Hallo,

ich versuche den einen oder anderen im Mantis der Jcl gemeldeten Bug zu beseitigen.
Leider bin ich da gerade steckengeblieben und der Debugger macht komische Sachen.

Ich habe versucht dieses Problem testweise zu beheben:
http://issuetracker.delphi-jedi.org/view.php?id=6637

Dazu habe ich den als Konsolenprogramm dort vorhandenen Demo Code in ein wirkliches
Rio 10.3.1 Konsolenprogramm gepackt und ja, er zeigt den Fehler an. Ich habe natürlich ein ReadLn am Ende ergänzt.

Danach habe ich die JclQueues.pas meiner regulären JCL Installation wie folgt geändert:

Delphi-Quellcode:
procedure TJclUnicodeStrQueue.AutoGrow;
begin
  if FHead > FTail then
    SetCapacity(CalcGrowCapacity(FCapacity, FCapacity - FHead + FTail + 1)) // looped
  else
    SetCapacity(CalcGrowCapacity(FCapacity, FTail - FHead + 1));
end;
Und natürlich habe ich das im protected Abschnitt der entsprechenden Klasse diese Methode als
override deklariert.

Dann habe ich auf das if in AutoGrow einen breakpoint gesetzt und das Konsolenprogramm neu
compiliert und ausgeführt.

Was tut es nun?
1. es hält erstmal nicht an dem Breakpoint sondern gibt beide Fehlermeldungszeilen aus
2. drücke ich Enter, springt er in meinen Breakpoint, führt angeblich den Code im if aus,
obwohl angeblich beide verglichenen Variablen 0 enthalten, also die erste nicht größer
als die zweite ist
3. single steppe ich weiter, geht er in jede Zeile auch die Leerzeile nach der AutoGrow Methode,
nach dieser Leerzeile biegt er ab nach JclSynch.pas TJclMultiReadExclusiveWrite.BeginWrite;

Warum tut der Debugger das?
Wie packe ich das richtig an, damit ich den Fix mal testen kann?


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:11 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