[Gelöst] Debugger ... wieder mal
-
- Beiträge: 1062
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
[Gelöst] Debugger ... wieder mal
Zwei Probleme zum Debugger:
Laz 2.0.11, FPC 3.2.1
Ein Leseversuch mit TIniFile klappt nicht wie beabsichtigt.
TIniFile.ReadBool(...) klappt nicht und ich wollte den Befehl mit F7 debuggen -- wird ignoriert und nicht in die Funktion eingestiegen. BTW TIniFile.ReadString(...) klappt.
Auch ein Breakpoint direkt in der Funktion ReadBool gesetzt wird nicht angesprungen.
Offensichtlich wird da irgendwie Sourcecode nicht zum Debuggen aufbereitet.
Irgend eine Idee was ich falsch mache ?
Da hat mich dann der Versionsteufel geritten und ich hab mir mit fpcupdeluxe die neue Version geholt
Laz 2.0.13 (fixies 2.0), FPC 3.2.1 (fixes 3.2)
Wollte in frisch erzeugter Applikation einen breakpoint setzen, worauf die IDE meint:
"There is no debugger specified" - auf Cancel gedrückt und die IDE schmiert mit einer Access Violation ab.
Laz 2.0.11, FPC 3.2.1
Ein Leseversuch mit TIniFile klappt nicht wie beabsichtigt.
TIniFile.ReadBool(...) klappt nicht und ich wollte den Befehl mit F7 debuggen -- wird ignoriert und nicht in die Funktion eingestiegen. BTW TIniFile.ReadString(...) klappt.
Auch ein Breakpoint direkt in der Funktion ReadBool gesetzt wird nicht angesprungen.
Offensichtlich wird da irgendwie Sourcecode nicht zum Debuggen aufbereitet.
Irgend eine Idee was ich falsch mache ?
Da hat mich dann der Versionsteufel geritten und ich hab mir mit fpcupdeluxe die neue Version geholt
Laz 2.0.13 (fixies 2.0), FPC 3.2.1 (fixes 3.2)
Wollte in frisch erzeugter Applikation einen breakpoint setzen, worauf die IDE meint:
"There is no debugger specified" - auf Cancel gedrückt und die IDE schmiert mit einer Access Violation ab.
Zuletzt geändert von charlytango am So 28. Feb 2021, 10:06, insgesamt 1-mal geändert.
-
- Beiträge: 586
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Debugger ... wieder mal
Also bei mir gehts (Laz trunk) FpDebug und gdb getestet. Win 10 - 64 bit / Fcp 3.0.4 / Dwarf
Kann daran liegen wie FPC kompiliert wurde / optimiert wurde....
Vielleicht wird die Funktion ja inlined? Obwohl für virtuelle Funktionen müsste da wahrscheinlich mindestens WPO ran.
Sind denn "blaue punkte" an der Source in inifiles.pp ?
Definitiv mit -O- (opt=0) probieren.
ggf {$INLINE off} oben in deine Unit.
Kann daran liegen wie FPC kompiliert wurde / optimiert wurde....
Vielleicht wird die Funktion ja inlined? Obwohl für virtuelle Funktionen müsste da wahrscheinlich mindestens WPO ran.
Sind denn "blaue punkte" an der Source in inifiles.pp ?
Definitiv mit -O- (opt=0) probieren.
ggf {$INLINE off} oben in deine Unit.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Debugger ... wieder mal
Hi!
Bei irgendwelchen Bibliotheken des Systems kann man lange auf F7 oder F8 rumhacken; Die enthalten per default keine Debug-Informationen. Wenn man das braucht muss man die mit Debug Info neu kompilieren.
Aber was ist an einem IniFile so problematisch?
Mögliche Fehler:
* Pfad und Dateiname mittels fileExists überpüfen
* Section und Identifier in ReadBool, -Integer, - String, .... sind case sensitive, d.h. auf GROSS und klein Buchstaben achten.
Dann klappts auch ohne Debugger.
Winni
Bei irgendwelchen Bibliotheken des Systems kann man lange auf F7 oder F8 rumhacken; Die enthalten per default keine Debug-Informationen. Wenn man das braucht muss man die mit Debug Info neu kompilieren.
Aber was ist an einem IniFile so problematisch?
Code: Alles auswählen
var ini: TIniFile;
begin
ini := TIniFile.Create('/Pfad/zu/meinem/IniFile.ini');
Volume := Ini.ReadInteger('BASS','VOLUME', 50);
Ini.Free;
end;
* Pfad und Dateiname mittels fileExists überpüfen
* Section und Identifier in ReadBool, -Integer, - String, .... sind case sensitive, d.h. auf GROSS und klein Buchstaben achten.
Dann klappts auch ohne Debugger.
Winni
-
- Beiträge: 1062
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Debugger ... wieder mal
@Winni
Nur scheint bei ReadBool irgendwas nicht in Ordnung zu sein. Und das wollte ich mir im Detail ansehen. Kann und wird wohl eher an mir liegen
Das ist der Code mit dem ich die Werte auslese:
und das ist das Ini-File:
[Standard]
FileNameEdit1=C:\Users\Source_Laz\iTunesXML\iTunes\iTunes Library.xml
DirectoryEdit1=C:\Users\Music
DecodeMain=false
DecodeTracks=true
DecodePlaylistHeader=true
DecodePlaylistItems=true
ResetSQL=true
RemoveMissingFilesFromXML=true
WriteChangedXML=true
DebugLevel=
VerboseLevel=
Hab die Identifyer mehrmals gechecked weil ja bekanntlich keine Fehlermeldungen bezüglich nicht gefundener Identifyer kommen.
Also alles wie immer -- trotzdem kommen bei den boolschen Werten Fantasiewerte an den Checkboxen an.
Und dem wollte ich per Debugging nachgehen... grübel
Gar nix ist daran problematisch, wird seit Dekaden immer wieder verwendet.
Nur scheint bei ReadBool irgendwas nicht in Ordnung zu sein. Und das wollte ich mir im Detail ansehen. Kann und wird wohl eher an mir liegen

Das ist der Code mit dem ich die Werte auslese:
Code: Alles auswählen
if not Assigned(MruIni) then exit;
cbDecodeMain.Checked := MruIni.ReadBool('Standard','DecodeMain',true);
cbDecodePlaylistHeader.Checked := MruIni.ReadBool('Standard','DecodeTracks',true);
cbDecodePlaylistHeader.Checked := MruIni.ReadBool('Standard','DecodePlaylistHeader',true);
cbDecodePlaylistItems.Checked := MruIni.ReadBool('Standard','DecodePlaylistItems',true);
cbResetSQLTable.Checked := MruIni.ReadBool('Standard','ResetSQL',true);
cbRemoveMissingFilesFromXML.Checked := MruIni.ReadBool('Standard','RemoveMissingFilesFromXML',true);
cbWriteChangedXML.Checked := MruIni.ReadBool('Standard','WriteChangedXML',true);
FileNameEdit1.Text := MruIni.ReadString('Standard','FileNameEdit1','undefined');
DirectoryEdit1.Text := MruIni.ReadString('Standard','DirectoryEdit1','undefined');
DebugLevelBar.Position:=MruIni.ReadInteger('Standard','DebugLevel',0);
VerboseLevelBar.Position:=MruIni.ReadInteger('Standard','VerboseLevel',3);
Application.ProcessMessages;
[Standard]
FileNameEdit1=C:\Users\Source_Laz\iTunesXML\iTunes\iTunes Library.xml
DirectoryEdit1=C:\Users\Music
DecodeMain=false
DecodeTracks=true
DecodePlaylistHeader=true
DecodePlaylistItems=true
ResetSQL=true
RemoveMissingFilesFromXML=true
WriteChangedXML=true
DebugLevel=
VerboseLevel=
Hab die Identifyer mehrmals gechecked weil ja bekanntlich keine Fehlermeldungen bezüglich nicht gefundener Identifyer kommen.
Also alles wie immer -- trotzdem kommen bei den boolschen Werten Fantasiewerte an den Checkboxen an.
Und dem wollte ich per Debugging nachgehen... grübel
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1647
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: Debugger ... wieder mal
Wenn ich mich richtig erinnere, werden Boolsche Werte in der Ini Datei mit Value=1 bzw. Value=0 gespeichert.
-
- Beiträge: 1062
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Debugger ... wieder mal
@fliegermichl -> Danke
Mahhh... schäme mich...
Scheinbar tut mir der Lockdown nicht gut... soviel Bretter kann man doch gar nicht vor dem Kopf haben.
Mahhh... schäme mich...
Scheinbar tut mir der Lockdown nicht gut... soviel Bretter kann man doch gar nicht vor dem Kopf haben.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: [Gelöst] Debugger ... wieder mal
Hi!
Jo - mit 1 und 0.
Das ist alles ursprünglich Windows-Zeugs und also C-Syntax.
So etwas fortschrittliches wie true und false darf man sich nicht erhoffen.
Kann man zur Not auch mit einem WriteBool rausbekommen.
Winni
Jo - mit 1 und 0.
Das ist alles ursprünglich Windows-Zeugs und also C-Syntax.
So etwas fortschrittliches wie true und false darf man sich nicht erhoffen.
Kann man zur Not auch mit einem WriteBool rausbekommen.
Winni