tedy nejdriv ten obligatni dik za clanek. Problematiku sleduji jiz delsi doby, protoze poterbuji v gui-c++ aplikaci scriptovaci jazyk a a z gui musim umoznit uzivateli nejakou primitivni debug-funkcionaitu. K tomu se jevi Vami popsane moznosti jednoznacne jako idealni.
Co mi prekvapuje, ze na netu nachazim radu projekttu, ktere se debugem pod lua zabyvaji a vidim, ze rada autoru se nejak nespokojuje s funcionalitou debug knihovny, nybrz pouzivaji jine cesty. Je to spravna domnenka, nebo stavi vsechna ta reseni pod lua na te uvedene debug-knihovne?
V clanku jste ty dalsi alternativy neuvedl. Ma to nejaky specialni duvod?
Me osobne knihovna debug vyhovuje, uz jen z toho duvodu, ze se da provozovat i s LuaJITem, coz muze byt rozdil oproti resenim, ktere nejakym zpusobem zasahuji do Lua VM. Co ma tak napada ze nejde:
1) hook zavolany pri cteni ci zapisu do promenne - coz se u debuggeru dost hodi
2) low level veci na urovni bajtkodu (ale toto nebude prenositelne na LuaJIT)
Asi by se naslo i neco dalsiho co debug neumi, zkusim popremyslet.
myslim tohle:
http://www.tutorialspoint.com/lua/lua_debugging.htm
z toho prehledu je videt, ze existuje nekolik commandline tools a i hotove debugery v nejakych IDE. Kazde to reseni ma nejake mouchy.
Ja stojim halt pred otazkou, jestli mam priohnout jiz nejaky ten commandline tool, nebo sahnout k debug-knihovne a tu user-interface si dopsat.
Mas pravdu, ze integrace do gdb by byla pekna. Jak je videt tady:
http://mysite.mweb.co.za/residents/sdonovan/lua/ ... viz lua_gdb.zip
tak snaha je, ale je to vsechno takove neucesane.
Já osobně bych si to napsal sám v rámci tréninku, ale nevím, jak jsi na tom s časem, termínama atd. :-)
V podstatě máš dvě možnosti:
1) použít debug() knihovnu přímo z Lua, něco jako je v první části toho odkazovaného článku nebo v tomto článku
2) použít luadebug interface z C/C++, tak si říkám, že bych to taky mohl popsat (@TODO list)
Tyjo ten automaticky generovanej graf s objektama/tabulkama je zajimavej:
http://mysite.mweb.co.za/residents/sdonovan/lua/lua.png
:-)