[gelöst] FPC 2.6.4 - Breakpoint StepIn funktioniert nicht
-
- 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
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.)
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.
-
- 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
Die entsprechende Unit muss mit debuginfo kompiliert werden damit breakpoints und step-in funktionieren.Rob hat geschrieben: Die Unit wird einfach übersprungen.
Ich suche nun schon den halben Tag lang und finde keine Lösung.
-
- 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
Hi mse,mse hat geschrieben: Die entsprechende Unit muss mit debuginfo kompiliert werden damit breakpoints und step-in funktionieren.
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
-
- 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
Ich benutze einen SVN checkout und dieses Script:
Wobei bei ich in .fpc.cfg mittels #IFDEF's die gewünschte Version auswähle, z.B.
Es gibt sicher noch andere Möglichkeiten.
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
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
...
Re: FPC 2.6.4 - Breakpoint StepIn funktioniert nicht
Was funktioniert denn nicht bei TRegistry?
Hast du schon mal im Bugtracker nachgeschaut ob der Fehler bekannt ist?
Hast du einen BT Eintrag gemacht?
Hast du schon mal im Bugtracker nachgeschaut ob der Fehler bekannt ist?
Hast du einen BT Eintrag gemacht?
-
- 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
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,
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
-
- 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
Entsprechendes Script für Windows:Rob hat geschrieben: unter Ubuntu klappt das bei mir auch, aber das unter Windows laufen zu lassen bin ich wohl zu doof.
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
Wenn die RTL/FCL mit debuginfo ausgestattet werden soll müssen tatsächlich alle units mit den entsprechenden Optionen kompiliert werden.Idealerweise wird auch nur der Teil compiliert der auch tatsächlich compiliert werden muss.