Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz: konzol alkalmazás kimenetének olvasása linux alatt 2012 szept. 30 16:43 #1189

  • devians
  • devians profilkép
  • Új tag
  • Új tag
  • Hozzászólások: 3
  • Köszönetek: 0
Szia Gabor

Kosz a segitseget.
A helyzet nalam kicsit furcsabb.

A debug info termeszetesen be van kapcsolva.
A forditas soran keszult file tartalmazza is a symbol es Line infokat, amit az bizonyit szamomra, hogyha elinditom a Kdbg-t, akkor azzal tokeletesen mukodik a debug ossze funkcioja. (a hatterben ez is ugyanazt a GDB-t futtatja).

Az altalad megadott linkben volt olyen javaslat, hogy nezzuk meg a "Debug Output" ablakot a futas utan.

Nos itt sok egyeb szoveg mellett a kovetkezo megjegyzest talaltam:
~"Program stopped at 0x804edf0.\n"
~"It stopped at a breakpoint that has since been deleted.\n"
~"Type \"info stack\" or \"info registers\" for more information.\n"
^done
(gdb)

Azaz magyarul, megallt a torespontnal, amit azota toroltek.
Nem tudom, hogy ez mit jelent, de a valosagban nem erzekeltem, hogy a program megallt volna, mert normalisan lefutott, es a vegen a "Run Output" ablakba ki is irta, amit kell.
Es termeszetesen nem toroltem a torespontot, az ugyanugy ott van, ellenoriztem is.

A program pedig futas kozben athaladt azon a soron is, ahol a torespont volt.

Kiegeszito infokent irom, hogy a Lazarus 1.0-t hasznalom.

udv

Válasz: konzol alkalmazás kimenetének olvasása linux alatt 2012 szept. 29 04:09 #1188

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Ha program futása nem áll meg a töréspontnál akkor valószínűleg el sem jut odáig. Próbáld meg egy "Helló Világ" jellegű programmal is!
Ha ez utóbbi sem áll meg akkor nézd át a "Project / Project options" menüpontban a "Compiler options / Linking" beállításait! Legyen debug infó generálva!

Egyszer volt egy ehhez hasonló hiba egy korábbi változatban.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Válasz: konzol alkalmazás kimenetének olvasása linux alatt 2012 szept. 21 12:55 #1186

  • devians
  • devians profilkép
  • Új tag
  • Új tag
  • Hozzászólások: 3
  • Köszönetek: 0
Kedves Gabor
Köszönöm a segitseget, müködik.
Ugy tünik az volt a hibam, hogy nem értettem meg a Lazarus koncepcióját, ti. hogy projektben gondolkozik. Igy a default projektben megadott filokat hiába töröltem ki, és betöltöttem a saját filomat, de ettől a projekt jellege nem változott meg. Ezért nem is müködött.
Amikor viszont a tanácsod szerint uj projektet hoztam létre, attól helyreállt a lelkivilága. Érdekes módon a projekt menüpontok viszont nem az első oszlopban vannak, hanem hátrébb.

Most ott tartok, hogy az editálás több ablakban is mükodik, a forditás is. Használom is. A debug funkció egyenlöre halott. Hiába jelölök ki breakpontot, meg is jelenik, de a program nem áll ott meg.
Igy kénytelen vagyok a debugolást külön Kdbg-vel végezni.

üdvözlettel

Válasz: konzol alkalmazás kimenetének olvasása linux alatt 2012 aug. 01 15:49 #1135

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Mivel azt írtad, hogy "A programok az önálló FreePascal fordítóval természetesen gond nélkül lefordíthatók", ezért a Lazarus-ban történő fordításhoz a következő eljárást javaslom:
  1. A menüben kattints a "Projekt/Új projekt fájlból" (Project/New project from file) menüpontra
  2. A "Forráskód választása" (Choose program source) ablakban keresd meg a fájlt és kattints a megnyitásra
  3. A megjelenő "Projekt létrehozása" (Create a new project) ablakban pedig a "Program"-ot kell választani, így a Lazarus nem akarja a TCustomApplication használát (és ennek következményeit/követelményeit) erőszakolni. A "Program" és "Console Application" nem ugyanazt jelenti, olvasd el a leírásokat az ablakban!
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Válasz: konzol alkalmazás kimenetének olvasása linux alatt 2012 aug. 01 09:21 #1134

  • devians
  • devians profilkép
  • Új tag
  • Új tag
  • Hozzászólások: 3
  • Köszönetek: 0
Ebben a témában nekem is lenne kérdésem.

Régi klasszikus Pascalban irt programjaim vannak (konzol alkalmazasok).
Kylixon készültek, vagy még korábban.
Mivel a Kylix behalt, gondoltam a karbantartásukat folytatom Lazarus környezetben.
Lehetséges ez?

Nekem eddig nem sikerült, mert ha betöltöm a programot, mindenféle unitot akar hozzá csatolni. Amiket én nem ismerek, a programok nem is használják, akkor meg minek. Viszont enélkül meg nem akar forditani. (A programok az önálló FreePascal forditóval természetesen gond nélkül lefordithatók)

Szóval a kérdésem az, hogy TProcess meg egyébb nyalánkságokat ki tudom-e kerülni, vagy ez benne van a Lazarusban és enélkül nem müködik?

Válasz:konzol alkalmazás kimenetének olvasása linux alatt 2011 márc. 06 09:51 #726

  • Athomas
  • Athomas profilkép Témaindító
  • Moderátor
  • Moderátor
  • Sör, virsli, Lazarus
  • Hozzászólások: 46
  • Köszönetek: 0
Köszönöm a kimerítő választ, akkor nekiállok...

Válasz:konzol alkalmazás kimenetének olvasása linux alatt 2011 márc. 06 09:38 #725

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A pipeline | és a redirection <> nem működik csak ha a shell már fut, mivel ezeket csak a parancsértelmező tudja kezelni. Hasonló probléma már volt itt a forumon.
A bash (majdnem ugyanúgy mint a dos/windows) támogatja a < | > (beolvasás,átadás,kiírás) operátorokat a parancssorban. Ezek (ha más nincs megadva) az StdIn (pascal:Input) és az StdOut (pascal:Output) fájlok.

Írj egy szkriptet, amiben a szükséges parancsokat elhelyezed.
Az pascal programodból (jobb híján az Exec paranccsal, de így már a TProcess is működni fog) indítsd el a bash-t és paraméterként add meg a szkript nevét. Valahogy így:
Exec ( '/bin/bash' , 'útvonal/szkriptneve.sh' ) ;

Bash scripting Tutorial

A parancs kimenete a kimenetfájl-ba kerül:
parancs paraméter > kimenetfájl

A parancs stdin-en keresztül kapja meg a bemenetfájl tartalmát:
parancs paraméter < bemenetfájl

A parancs2 stdin-en keresztül kapja meg a parancs1 kimenetét:
parancs1 paraméter1 | parancs2 paraméter2

A bash (és általában a többi unix terminál is) további lehetőséget ad:
- a parancsok csoportosíthatók és kimenetük egyként is kezelhető
- a parancsok kimenete változóba is menthető
- a változók tartalmát egy parancs paramétereként megkaphat
- stb.

Bash manual - Pipelines
Bash manual - Process substitution
Wiki - Pipeline (Unix)
Wiki - Redirection (computing)
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

konzol alkalmazás kimenetének olvasása linux alatt 2011 márc. 05 21:23 #724

  • Athomas
  • Athomas profilkép Témaindító
  • Moderátor
  • Moderátor
  • Sör, virsli, Lazarus
  • Hozzászólások: 46
  • Köszönetek: 0
Sziasztok!

front-end alkalmazást kezdtem írni egy parancssori programhoz linux alatt.
Miután nem sikerült a kimenetét kiovasni, megnéztem a referenciában, ahol azt találtam hogy a TProcess nem támogatja unix alatt a pipeline-t.
Azt ajánlják, hogy a Shell-en keresztül lehet pipeline-al futtatni a külsö alkalmazást. Sajna ennyire nem ismerem a bash-t, és hogy hogyan tudnám beépíteni a programomba, ezért kérem ha valaki tud megoldást, egy rövid példát írjon.

  • Oldal:
  • 1