2013-02-10 6 views
6

लुआ में मैं utils.debug() कहा जाता है एक समारोह है और मुझे क्या करना चाहते हैं मेरी लुआ कोड में इसका इस्तेमाल करते हैं इस प्रकार है:लुआ और सी ++ एपीआई हो रही क्रियान्वित जानकारी

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 

मैं चाहूँगा भर में इसका इस्तेमाल करने के लिए मेरे लुआ कोड मुझे डीबग करने में मदद करने के लिए। नतीजतन, मैं अपने सी ++ कोड को जानना चाहता हूं कि लुआ कोड में utils.debug() कहां से बुलाया गया था। मैं lua_Debug और lua_getinfo में देखा है और वे सुंदर मैं क्या चाहते हैं उसके पास लगते हैं, लेकिन मैं एक टुकड़ा याद कर रहा हूँ:

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 
} 

है यह क्या lua_Debug struct के लिए है या वहाँ एक और सुविधा या विधि मैं का उपयोग करना चाहिए है यह करो?

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; 
} 

अधिक जानकारी के लिए documentation for lua_getinfo देखें:

+1

fyi lua में एक समर्थन मेलिंग सूची है, यदि आप यहां एक सैद्धांतिक उत्तर नहीं देते हैं तो आप भी कोशिश कर सकते हैं। –

+1

मैं बिल्कुल पूछ रहा हूं कि आप क्या पूछ रहे हैं। क्या आप पूछ रहे हैं कि 'lua_getinfo' का उपयोग कैसे करें? चूंकि मैनुअल में [यह क्या करता है पर बहुत अच्छा प्रलेखन] है (http://www.lua.org/manual/5.1/manual.html#lua_getinfo)। –

उत्तर

8

यह है कि मैं क्या एक लुआ स्टैक ट्रेस निर्माण करने के लिए इस्तेमाल करते हैं।

संबंधित मुद्दे