futás közbeni debug --mivel érdemes? [megoldva]

Fórumok

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?

Hozzászólások

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

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

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

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

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