[Gelöst] Debugger ... wieder mal

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
charlytango
Beiträge: 843
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

Beitrag von charlytango »

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.
Zuletzt geändert von charlytango am So 28. Feb 2021, 10:06, insgesamt 1-mal geändert.

martin_frb
Beiträge: 572
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

Beitrag von martin_frb »

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.

Benutzeravatar
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

Beitrag von Winni »

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?

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;
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

charlytango
Beiträge: 843
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

Beitrag von charlytango »

@Winni
Winni hat geschrieben:
Sa 27. Feb 2021, 23:55
Aber was ist an einem IniFile so problematisch?
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;
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

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1430
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Debugger ... wieder mal

Beitrag von fliegermichl »

Wenn ich mich richtig erinnere, werden Boolsche Werte in der Ini Datei mit Value=1 bzw. Value=0 gespeichert.

charlytango
Beiträge: 843
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

Beitrag von charlytango »

@fliegermichl -> Danke

Mahhh... schäme mich...

Scheinbar tut mir der Lockdown nicht gut... soviel Bretter kann man doch gar nicht vor dem Kopf haben.

Benutzeravatar
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

Beitrag von Winni »

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

Antworten