2013-02-10 8 views
6

yürütme bilgi: Ben istiyorum Lua & C++ API alma Ben bir işlev <code>utils.debug()</code> denilen var ve ne yapmak istiyorsunuz aşağıdaki gibi benim Lua kodunda kullanmak olduğu Lua içinde

function Foo:doSomething 
    if (/* something */) then 
     print("Success!") 
    else 
     utils.debug() 
    end 
end 

function Foo:doSomethingElse 
    if (/* something else */) then 
     print("Awesome!") 
    else 
     utils.debug() 
    end 
end 

boyunca kullanmayı Lua kodumu hata ayıklamada yardımcı olacak. Sonuç olarak, C++ kodumun, Lua kodunda utils.debug()'un nereden arandığını bilmesini istiyorum. Ben lua_Debug ve lua_getinfo içine baktı ve onlar ne istiyorum oldukça yakın görünüyor, ama ben bir parça eksik:

int MyLua::debug(lua_State* L) 
{ 
    lua_Debug ar; 
    lua_getstack(L, 1, &ar); 
    lua_getinfo(L, ??????, &ar); 

    // print out relevant info from 'ar' 
    // such as in what function it was called, line number, etc 
} 

mi lua_Debug yapı içindir yoksa kullanması gerektiğini başka bir tesis veya yöntem var ne bu Bunu yap?

lua_Debug info; 
int level = 0; 
while (lua_getstack(l, level, &info)) { 
    lua_getinfo(l, "nSl", &info); 
    fprintf(stderr, " [%d] %s:%d -- %s [%s]\n", 
     level, info.short_src, info.currentline, 
     (info.name ? info.name : "<unknown>"), info.what); 
    ++level; 
} 

fazla bilgi için documentation for lua_getinfo bakınız:

+1

fyi lua, burada doyurucu bir cevap alamıyorsanız deneyebileceğiniz bir destek posta listesine sahiptir. –

+1

Tam olarak ne sorduğun konusunda net değilim. Lua_getinfo'yu nasıl kullanacağınızı mı soruyorsunuz? Çünkü el kitabında [neler yaptıklarına dair oldukça iyi belgeler var] (http://www.lua.org/manual/5.1/manual.html#lua_getinfo). –

cevap

8

Bu ben Lua yığın izleme üretmek için kullandığınız yöntemdir.