Terminalfenster für debug-output unter Linux

Für Fragen rund um die Ide und zum Debugger
Antworten
Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Terminalfenster für debug-output unter Linux

Beitrag von Eb »

Hallo,

Wenn ich unter Windows arbeite, kann ich mit der Checkbox unter
Projekt - Compilereinstellungen - Linken - Zielbetriebssystemspezifische Einstellungen - Win 32 gui application
einstellen, dass beim Kompilieren ein cmd-Fenster aufgeht in dem die Ausgaben von debugln angezeigt werden.

Was muss ich unter Linux einstellen, damit ich ein terminal-fenster mit diesen Ausgaben bekomme?

Eberhard

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Ich kann dir nicht ganz folgen. Mit dieser Einstellung wird lediglich erreicht, daß ein störendes Fenster nicht angezeigt wird (und das gilt auch nur für Windows.
Unter Linux reicht es normalerweise, Lazarus aus dem Terminal heraus zu staren um alle Meldungen im Terminal mitlesen zu können. Ansonsten gibt es noch Compilerschalter wie -WC.

knight

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Seither habe ich lazarus immer über ein icon auf dem desktop gestartet.

Nun habe ich es aus einem Terminal raus gestartet
mit diese 4 Varianten:
/usr/lib/lazarus/lazarus
/usr/lib/lazarus/startlazarus
/usr/lib/lazarus/lazarus &
/usr/lib/lazarus/startlazarus &


Ich habe ein Testprogramm erstellt mit nur dieser Funktionalität:

procedure TForm1.Button1Click(Sender: TObject);
begin
debugln('hallo');
end;

Beim Start von Lazarus kommen in das Terminalfenster folgenden Ausgaben:

Code: Alles auswählen

TLazarusManager.Run starting /usr/lib/lazarus/lazarus ...
TApplication.IconChanged - TODO: convert this message...no implementation in gtk or win32
NOTE: help options config file not found - using defaults
invalid Package Link: file "/root/lazarus/zeoslib/packages/lazarus/zcomponent.lpk" does not exist.
TMainIDE.DoLoadLFM A /root/lazarus/gtk1/unit1.pas IsPartOfProject=True
SUCCESS: streaming lfm="/root/lazarus/gtk1/unit1.lfm"


Beim Kompilieren des Programms kommen in diesem Terminal einige Meldungen an:

Code: Alles auswählen

[TMainIDE.DoRunProject] A
TMainIDE.DoInitProjectRun A True 0
TMainIDE.DoInitProjectRun B
TMainIDE.DoSaveAll
TMainIDE.DoSaveProject End
TCompiler.Compile WorkingDir="/root/lazarus/gtk1/" CompilerFilename="/usr/bin/ppc386" CompilerParams=" -S2cgi -OG1 -gl -WG -vewnhi -l -Fu/usr/lib/lazarus/lcl/units/i386-linux/ -Fu/usr/lib/lazarus/lcl/units/i386-linux/gtk2/ -Fu/usr/lib/lazarus/packager/units/i386-linux/ -Fu. -oproject1 -dLCL -dLCLgtk2 project1.lpr"
[TCompiler.Compile] CmdLine="/usr/bin/ppc386  -S2cgi -OG1 -gl -WG -vewnhi -l -Fu/usr/lib/lazarus/lcl/units/i386-linux/ -Fu/usr/lib/lazarus/lcl/units/i386-linux/gtk2/ -Fu/usr/lib/lazarus/packager/units/i386-linux/ -Fu. -oproject1 -dLCL -dLCLgtk2 project1.lpr"
386-linux/ -Fu. -oproject1 -dLCL -dLCLgtk2 project1.lpr"
Hint: Start of reading config file /etc/fpc.cfg
Hint: End of reading config file /etc/fpc.cfg
Warning: You are using the obsolete switch -OG
Free Pascal Compiler version 2.2.0 [2007/08/31] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling project1.lpr
Linking project1
18 lines compiled, 3.5 sec
1 warning(s) issued
2 hint(s) issued
[TCompiler.Compile] end
[TDebugManager.DoInitDebugger] A
[TCmdLineDebugger] Debug PID: 4782
[Debugger] Log output: &"No symbol table is loaded.  Use the \"file\" command.\n"
TGDBMIDebugger.ProcessResult Error: ,msg="No symbol table is loaded.  Use the \"file\" command."
[Debugger] Running GDB version: C
[TDebugger.SetFileName] "/root/lazarus/gtk1/project1"
[TDebugManager.DoInitDebugger] END
[TMainIDE.DoRunProject] B TGDBMIDebugger
TDebugManager.RunDebugger A True Destroying=False
TDebugManager.RunDebugger B TGDBMIDebugger
TGDBMIDebugger.StartDebugging WorkingDir="/root/lazarus/gtk1/"
[Debugger] Log output: &"No symbol \"FPC_THREADVAR_RELOCATE_PROC\" in current context.\n"
TGDBMIDebugger.ProcessResult Error: ,msg="No symbol \"FPC_THREADVAR_RELOCATE_PROC\" in current context."
[Debugger] Log output: &"info functions FPC_CPUINIT\n"
[Debugger] Log output: &"info address main\n"
[Debugger] Log output: &"info file\n"
[Debugger] File type: elf32-i386
[Debugger] Entry point: 0x82293f0
[Debugger] Console output: ~"[Thread debugging using libthread_db enabled]\n"
[Debugger] Console output: ~"[New Thread 0xb752e6c0 (LWP 4783)]\n"
[Debugger] Console output: ~"[Switching to Thread 0xb752e6c0 (LWP 4783)]\n"
[WARNING] Debugger: Unknown stopped reason:
[Debugger] Log output: &"info program\n"
[Debugger] Target PID: 4783
nun klicke ich 2 mal auf den Button meines Testprogrammes. Im Terminalfenster kommt nichts an!

Wenn ich nun das Testprogramm beende kommen im Terminalfenster noch die folgenden Zeilen hinzu (die Ausgabe von debugln):

Code: Alles auswählen

[DBGTGT] hallo
[DBGTGT] hallo
[TDebugger.SetFileName] ""
[TMainIDE.DoRunProject] END

Ich bekomme die Ausgabe von debugln also nicht während der Laufzeit, sondern erst danach.

Irgendeine Einstellung fehlt bei mir wohl noch.

Den Compilerschalter -WC habe ich in den Lazarus-Menüs nicht gefunden.

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Den Compilerschalter -WC habe ich in den Lazarus-Menüs nicht gefunden.
Gib den Schalter mal unter Werkzeuge -> "Lazarus erstellen" einrichten -> Erweiterte Build-Optionen -> Einstellungen ein und erstelle Lazarus neu.

knight

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

mach ich heute abend.
Ich melde dann das Ergebnis hier.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du brauchst doch eigentlich nur bei Startparameter Startprogramm verwenden mit anhaken. Da ist schon das terminal drin, und ebi mir hat das eig immer geklappt, das debugln auf der console landet.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Eb
Lazarusforum e. V.
Beiträge: 240
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

Problem gelöst!

Bei Start - Startparamameter - Startprogramm muss der Haken gesetzt sein und
eine Zeile eingetragen werden die ein executable aufruft was auf dem system vorhanden ist

Bei mir stand da:

Code: Alles auswählen

/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)
das habe ich geändert auf:

Code: Alles auswählen

/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)
und schon tuts.

Merci

Antworten