org.luaj.vm2.lib
Class DebugLib

java.lang.Object
  extended by org.luaj.vm2.Varargs
      extended by org.luaj.vm2.LuaValue
          extended by org.luaj.vm2.LuaFunction
              extended by org.luaj.vm2.lib.LibFunction
                  extended by org.luaj.vm2.lib.TwoArgFunction
                      extended by org.luaj.vm2.lib.DebugLib

public class DebugLib
extends TwoArgFunction

Subclass of LibFunction which implements the lua standard debug library.

The debug library in luaj tries to emulate the behavior of the corresponding C-based lua library. To do this, it must maintain a separate stack of calls to LuaClosure and LibFunction instances. Especially when lua-to-java bytecode compiling is being used via a Globals.Compiler such as LuaJC, this cannot be done in all cases.

Typically, this library is included as part of a call to either JsePlatform.debugGlobals() or JmePlatform.debugGlobals()

 Globals globals = JsePlatform.debugGlobals();
 System.out.println( globals.get("debug").get("traceback").call() );
  

To instantiate and use it directly, link it into your globals table via LuaValue.load(LuaValue) using code such as:

 Globals globals = new Globals();
 globals.load(new JseBaseLib());
 globals.load(new PackageLib());
 globals.load(new DebugLib());
 System.out.println( globals.get("debug").get("traceback").call() );
  

This library exposes the entire state of lua code, and provides method to see and modify all underlying lua values within a Java VM so should not be exposed to client code in a shared server environment.

See Also:
LibFunction, JsePlatform, JmePlatform, Lua 5.2 Debug Lib Reference

Nested Class Summary
static class DebugLib.CallStack
           
 
Field Summary
static boolean CALLS
           
static boolean TRACE
           
 
Fields inherited from class org.luaj.vm2.lib.LibFunction
name, opcode
 
Fields inherited from class org.luaj.vm2.LuaFunction
s_metatable
 
Fields inherited from class org.luaj.vm2.LuaValue
ADD, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILS, NONE, NOVALS, ONE, POW, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, ZERO
 
Constructor Summary
DebugLib()
           
 
Method Summary
 LuaValue call(LuaValue modname, LuaValue env)
          Perform one-time initialization on the library by creating a table containing the library functions, adding that table to the supplied environment, adding the table to package.loaded, and returning table as the return value.
static org.luaj.vm2.lib.DebugLib.NameWhat getobjname(Prototype p, int lastpc, int reg)
           
 void onCall(LuaClosure c, Varargs varargs, LuaValue[] stack)
           
 void onCall(LuaFunction f)
           
 void onInstruction(int pc, Varargs v, int top)
           
 void onReturn()
           
 java.lang.String traceback(int level)
           
 
Methods inherited from class org.luaj.vm2.lib.TwoArgFunction
call, call, call, invoke
 
Methods inherited from class org.luaj.vm2.lib.LibFunction
bind, bind, call, newupe, newupl, newupn, tojstring
 
Methods inherited from class org.luaj.vm2.LuaFunction
checkfunction, classnamestub, getmetatable, isfunction, name, optfunction, strvalue, type, typename
 
Methods inherited from class org.luaj.vm2.LuaValue
add, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, buffer, call, callmt, checkboolean, checkclosure, checkdouble, checkglobals, checkint, checkinteger, checkjstring, checklong, checkmetatag, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, compareerror, compareerror, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, div, div, div, divInto, eq_b, eq, eqmtcall, equals, error, get, get, get, gettable, gt_b, gt_b, gt_b, gt, gt, gt, gteq_b, gteq_b, gteq_b, gteq, gteq, gteq, illegal, inext, initupvalue1, invoke, invoke, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isstring, istable, isthread, isuserdata, isuserdata, isvalidkey, len, lenerror, length, listOf, listOf, load, lt_b, lt_b, lt_b, lt, lt, lt, lteq_b, lteq_b, lteq_b, lteq, lteq, lteq, metatableOf, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq_b, neq, next, not, onInvoke, optboolean, optclosure, optdouble, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, or, pow, pow, pow, powWith, powWith, presize, raweq, raweq, raweq, raweq, raweq, rawget, rawget, rawget, rawlen, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, settable, strcmp, strcmp, strongvalue, sub, sub, sub, subargs, subFrom, subFrom, tableOf, tableOf, tableOf, tableOf, tableOf, tableOf, tailcallOf, testfor_b, toboolean, tobyte, tochar, todouble, tofloat, toint, tolong, tonumber, toshort, tostring, toString, touserdata, touserdata, typerror, unimplemented, userdataOf, userdataOf, valueOf, valueOf, valueOf, valueOf, valueOf, valueOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf
 
Methods inherited from class org.luaj.vm2.Varargs
argcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, eval, isfunction, isnil, isnoneornil, isnumber, isstring, istable, isTailcall, isthread, isuserdata, isvalue, optboolean, optclosure, optdouble, optfunction, optint, optinteger, optjstring, optlong, optnumber, optstring, opttable, optthread, optuserdata, optuserdata, optvalue, toboolean, tobyte, tochar, todouble, tofloat, toint, tojstring, tolong, toshort, touserdata, touserdata, type
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CALLS

public static boolean CALLS

TRACE

public static boolean TRACE
Constructor Detail

DebugLib

public DebugLib()
Method Detail

call

public LuaValue call(LuaValue modname,
                     LuaValue env)
Perform one-time initialization on the library by creating a table containing the library functions, adding that table to the supplied environment, adding the table to package.loaded, and returning table as the return value.

Specified by:
call in class TwoArgFunction
Parameters:
modname - the module name supplied if this is loaded via 'require'.
env - the environment to load into, which must be a Globals instance.
Returns:
First return value (this(arg1,arg2)), or LuaValue.NIL if there were none.
See Also:
LuaValue.call(), LuaValue.call(LuaValue), LuaValue.call(LuaValue, LuaValue, LuaValue), LuaValue.invoke(LuaValue, Varargs), LuaValue.method(String,LuaValue,LuaValue), LuaValue.method(LuaValue,LuaValue,LuaValue)

onCall

public void onCall(LuaFunction f)

onCall

public void onCall(LuaClosure c,
                   Varargs varargs,
                   LuaValue[] stack)

onInstruction

public void onInstruction(int pc,
                          Varargs v,
                          int top)

onReturn

public void onReturn()

traceback

public java.lang.String traceback(int level)

getobjname

public static org.luaj.vm2.lib.DebugLib.NameWhat getobjname(Prototype p,
                                                            int lastpc,
                                                            int reg)


Copyright © 2007-2015 Luaj.org. All Rights Reserved.