[gelöst] FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Für Fragen rund um die Ide und zum Debugger
Antworten
Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

[gelöst] FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von Rob »

Hallo,

ich habe mal wieder ein kleines Problem.
Die FPC Unit TRegistry funktioniert nicht wie sie soll, deshalb wollte ich sie debuggen.
Also in meinem Program vor aufruf von reg.ReadString einen Breakpoint gesetzt und in Reg.Readstring in der Unit Registry.
Kurz gesagt der Breakpoint ist ohne Funktion. In meinem Code bleibt er vor Reg.Readstring stehen, aber ich kann weder mit StepIn (Einzelschritt hinein) noch mit dem in der Unit registry gesetzten Breakpoint hineindebuggen.
Die Unit wird einfach übersprungen.
Ich suche nun schon den halben Tag lang und finde keine Lösung.

Ich nutze Win7 64bit, Lazarus 1.2.6 und fpc 2.6.4

Grüße
Rob

(In der Unit registry ist tatsächlich ein Bug, wenn ich den Registry Zugriff mit Win Methoden selbst nachbaue funktioniert es.)
Zuletzt geändert von Rob am Di 4. Nov 2014, 06:53, insgesamt 1-mal geändert.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von mse »

Rob hat geschrieben: Die Unit wird einfach übersprungen.
Ich suche nun schon den halben Tag lang und finde keine Lösung.
Die entsprechende Unit muss mit debuginfo kompiliert werden damit breakpoints und step-in funktionieren.

Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von Rob »

mse hat geschrieben: Die entsprechende Unit muss mit debuginfo kompiliert werden damit breakpoints und step-in funktionieren.
Hi mse,

ich habe die Unit jetzt im Projekt mit aufgenommen und kompiliert.
Debuggen hat jetzt funktioniert.

Nun möchte ich die kompilierten Units im fpc Verzeichnis neu erstellen.
Reicht es da nur die kompilierten Dateien aus dem Projekt reinzukopieren,
ich vermute mal nein wegen etwaiger Abhängigkeiten.
Gibt es irgendwo wine Anleitung wie ich die FPC neu oder in Teilen neu kompilieren kann/soll.

Danke
Grüße
Rob

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von mse »

Ich benutze einen SVN checkout und dieses Script:

Code: Alles auswählen

 
#!/bin/sh
fpcdir=/home/mse/packs/standard/svn/fp/fixes_2_6
cd ${fpcdir}/rtl
make clean
cd ${fpcdir}/packages
make clean
cd ${fpcdir}
make OPT="-gl -O-" FPC=${fpcdir}/compiler/ppc386 rtl packages
cd ${fpcdir}/../mse
 
Wobei bei ich in .fpc.cfg mittels #IFDEF's die gewünschte Version auswähle, z.B.

Code: Alles auswählen

 
...
#IFDEF svnfixes_2_6
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/rtl/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/libc/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/x11/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/fcl-image/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/pasjpeg/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/paszlib/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/fcl-base/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/hash/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/fcl-db/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/postgres/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/mysql/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/sqlite/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/odbc/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/chm/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/fcl-xml/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/gdbint/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/users/units/$fpctarget
-Fu/home/mse/packs/standard/svn/fp/fixes_2_6/packages/fcl-process/units/$fpctarget
#ELSE
...
 
Es gibt sicher noch andere Möglichkeiten.

Benutzeravatar
theo
Beiträge: 10857
Registriert: Mo 11. Sep 2006, 19:01

Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von theo »

Was funktioniert denn nicht bei TRegistry?
Hast du schon mal im Bugtracker nachgeschaut ob der Fehler bekannt ist?
Hast du einen BT Eintrag gemacht?

Rob
Beiträge: 34
Registriert: Fr 8. Jul 2011, 10:45
OS, Lazarus, FPC: Win7, Ubuntu 64 und 32bit Lazarus (immer aktuellstes Release) FPC 2.6.4
CPU-Target: amd_64 und i386
Kontaktdaten:

Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von Rob »

Hi,

@mse,
unter Ubuntu klappt das bei mir auch, aber das unter Windows laufen zu lassen bin ich wohl zu doof.
Idealerweise wird auch nur der Teil compiliert der auch tatsächlich compiliert werden muss.

@theo
der Fehler ist schon seit 4/2012 bekannt, ich habe die Lösung auch im Bugtracker eingestellt, vielleicht schafft es ja jemand den Code zu kopieren und einzufügen.
Es ist der Käfer mit der Nummer 0021899
Hier der Url.
http://bugs.freepascal.org/view.php?id=21899

Problem ist das es in Windows (7? Win 8 hab ich nicht) in der Registry nullterminierte und nicht nullterminierte Strings gibt.
In der Komponente wird aber beim Init gesetzt das Strings nullterminiert sind. Das hab ich mal versuchsweise umgebaut, damit funktioniert es auch nicht.
Irgendwie ist der Code nicht wirklich überlegt gebaut worden (sieht man auch wemm man einen Blick auf die original function wirft). ;-)

Meiner Lösung ist das nun egal ob nullterminiert oder nicht,
so wie dem Windows Registryeditor auch.

Grüße
Rob

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht

Beitrag von mse »

Rob hat geschrieben: unter Ubuntu klappt das bei mir auch, aber das unter Windows laufen zu lassen bin ich wohl zu doof.
Entsprechendes Script für Windows:

Code: Alles auswählen

 
call \fpcpath
d:
cd \fixes_2_6\rtl
make clean
cd ..\packages
make clean
cd ..
make OPT="-gl -O-" FPC=d:\fixes_2_6\compiler\ppc386 rtl packages
g:
cd \fpc-mse
 
Idealerweise wird auch nur der Teil compiliert der auch tatsächlich compiliert werden muss.
Wenn die RTL/FCL mit debuginfo ausgestattet werden soll müssen tatsächlich alle units mit den entsprechenden Optionen kompiliert werden.

Antworten