Sziasztok.
Eddig ha terminalból indítottam egy programot, menet közben kiírt annyi információt, amely elegendő volt az esetleges hiányosságok, hibák megoldásához.
Most azonban olyan kilépés történik futás közben, ami sem a terminálon, sem a prg saját logjában, sem a rendszernaplóban nem hagy nyomot.
Szóval a kérdésem: hogyan indítsam a kérdéses programomat, minek a paramétereként, hogy még a rendszerhívásokat is lássam?
- 4036 megtekintés
Hozzászólások
strace
ltrace
gdb attach
- A hozzászóláshoz be kell jelentkezni
Kösz szépen,
strace már pörgeti.. Akkor ezt napokig nézegetem majd.
A prg fejlesztője a gdb-t javasolta, de az szerintem nekem magas, mivel átlagosan 20 perc mindig elegendő volt hogy rájöjjek egy prg elindítására, ez kifogott rajtam.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Pont az első sor:
gdb
nem ment nekem, kiadta a gdb a saját parancssorát.
De még tanulmányozom, ezzel is kell mennie.
Amúgy az
strace -o /prg.strace prg
sor a prg nevű programomat az önkilövésig naplózta, már ezzel evagyok napokig
:)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
> nem ment nekem, kiadta a gdb a saját parancssorát.
Még mit csinálhatott volna a 'gdb' nevű program, ha paraméterek nélkül elindítják?
Ez itt magyarul van: http://forum.index.hu/Article/showArticle?t=9094231
- A hozzászóláshoz be kell jelentkezni
Ma frissebb vagyok agyilag.
Felfogtam: tényleg máshogy működik a gdb, mint vártam volna. Betölti a programot, de a gdbparanccsorában ki kell adnom, hogy
run --Mint a ZXSpectrumnál..
Aztán amit tesztelek, azt kell g kapcsolóval forgatni, mert a gdb is megköveteli ahogy nézegetem..
Köß a leírást!
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
De mondjuk ha kicsit megnézted volna az általam linkelt cheat sheet-et, akkor ez evidens is lett volna ;-)
- A hozzászóláshoz be kell jelentkezni
Megnéztem
- A hozzászóláshoz be kell jelentkezni
Akkor láttad az első bekezdést, hogy hogyan kell elindítani, gondolom nem is volt probléma :-)
- A hozzászóláshoz be kell jelentkezni
+1, illetve valgrind. Ha `-g`-vel forditod, akkor leallas (segfault, barmi) eseten megmondja hogy konkretan melyik modul hanyadik sora'ban sza'llt el.
- A hozzászóláshoz be kell jelentkezni
Köszi, ezt is megnézem!
cd /usr/src
svn co svn://svn.valgrind.org/valgrind/trunk valgrind
cd valgrind
./autogen.sh
./configure --prefix=g #(így gondoltad?)
make
make install
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
./configure --prefix=g #(így gondoltad?)
Jaj! Azért ennyire nem kéne...
A binárisodat, amit debugolsz fordítod -g kapcsolóval -> belefordítasz debug információt.
- A hozzászóláshoz be kell jelentkezni
ok.
(ennyire nem értek a témához)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Nem, ne a valgrind-et forditsd `-g` opcioval hanem a vizsgalando' programodat ;)) A valgrind-et csak tedd fel ahogy van (lasd: `kedvenc-csomagkezelom install valgrind`), oszt annyi.
- A hozzászóláshoz be kell jelentkezni
Nincs a csomagkezelőben, azt is fordítom
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Köszönöm a segítséget mindenkinek!
Végül a gdb megmondta a valóságot. (a vizsgálandó prg-t nem kellett újraforgatnom)
Egy nem arra a platformra írt plugint akart betölteni a prg-m, amikor a preferences dialogboxát akartam megnyitni. Töröltem, minden ment. Azóta a plugint forrásból felraktam és lám szép a napom.
:-)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Hagyni kell a rendszert, hogy core fájlokat csináljon, ehhez be kell állítani:
ulimit -c 9999999
Így elszálláskor (pl. segfault, abort) a processz után marad egy core nevű fájl. Erre elindítod a debuggert így:
gdb executable-file core-file
A bt parancs kiírja a processz elszálláskori hívási stackjét. Az esetek nagy részében ennyi elég.
--
ulysses.co.hu
- A hozzászóláshoz be kell jelentkezni
Ezt kipróbálom.
Gondolom a core file az éppen aktuális könyvtárba íródik.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni