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.VarArgFunction
                      extended by org.luaj.vm2.lib.DebugLib

public class DebugLib
extends VarArgFunction

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 LuaCompiler 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()

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

 LuaTable _G = new LuaTable();
 _G.load(new DebugLib());
  
Doing so will ensure the library is properly initialized and loaded into the globals table.

See Also:
LibFunction, JsePlatform, JmePlatform, http://www.lua.org/manual/5.1/manual.html#5.9

Field Summary
static boolean CALLS
           
static boolean DEBUG_ENABLED
           
static boolean TRACE
           
 
Fields inherited from class org.luaj.vm2.lib.LibFunction
name, opcode
 
Fields inherited from class org.luaj.vm2.LuaFunction
env, s_metatable
 
Fields inherited from class org.luaj.vm2.LuaValue
ADD, CONCAT, DIV, EMPTYSTRING, 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
protected static Varargs _getinfo(Varargs args, LuaValue level0func)
           
static void debugBytecode(int pc, Varargs extras, int top)
          Called by Closures on bytecode execution
static void debugOnCall(LuaThread thread, int calls, LuaFunction func)
          Called by Closures and recursing java functions on entry
static void debugOnReturn(LuaThread thread, int calls)
          Called by Closures and recursing java functions on return
static void debugSetupCall(Varargs args, LuaValue[] stack)
          Called by Closures to set up stack and arguments to next call
static java.lang.String fileline()
          Get file and line for the nearest calling closure.
static java.lang.String fileline(int level)
          Get file and line for a particular level, even if it is a java function.
 Varargs invoke(Varargs args)
          Override and implement for the best performance.
static java.lang.String sourceshort(Prototype p)
           
static java.lang.String traceback(int level)
          Get a traceback as a string for the current thread
static java.lang.String traceback(LuaThread thread, int level)
          Get a traceback for a particular thread.
 
Methods inherited from class org.luaj.vm2.lib.VarArgFunction
call, call, call, call, onInvoke
 
Methods inherited from class org.luaj.vm2.lib.LibFunction
bind, bind, newupe, newupl, newupn, tojstring
 
Methods inherited from class org.luaj.vm2.LuaFunction
checkfunction, getfenv, getmetatable, isfunction, optfunction, setfenv, type, typename
 
Methods inherited from class org.luaj.vm2.LuaValue
add, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, buffer, callmt, checkboolean, checkclosure, checkdouble, checkint, checkinteger, checkjstring, checklong, checkmetatag, checknotnil, checknumber, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalidkey, compareerror, compareerror, comparemt, concat, concat, concatmt, concatTo, concatTo, concatTo, div, div, div, divInto, eq_b, eq, eqmtcall, equals, error, get, get, get, getn, gettable, gt_b, gt_b, gt_b, gt, gt, gt, gteq_b, gteq_b, gteq_b, gteq, gteq, gteq, illegal, inext, invoke, invoke, invoke, invoke, invoke, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, invokemethod, isboolean, isclosure, isint, isinttype, islong, isnil, isnumber, isstring, istable, isthread, isuserdata, isuserdata, isweaknil, len, lenerror, length, listOf, listOf, load, lt_b, lt_b, lt_b, lt, lt, lt, lteq_b, lteq_b, lteq_b, lteq, lteq, lteq, metatag, method, method, method, method, method, method, mod, mod, mod, modFrom, mul, mul, mul, narg, neg, neq_b, neq, next, not, 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, rawset, rawset, rawset, rawset, rawset, rawset, rawset, rawsetlist, set, set, set, set, set, set, set, setmetatable, settable, strcmp, strcmp, strongkey, strongvalue, strvalue, sub, sub, sub, 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, subargs, 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 final boolean CALLS

TRACE

public static final boolean TRACE

DEBUG_ENABLED

public static boolean DEBUG_ENABLED
Constructor Detail

DebugLib

public DebugLib()
Method Detail

invoke

public Varargs invoke(Varargs args)
Description copied from class: VarArgFunction
Override and implement for the best performance. May not have expected behavior for tail calls. Should not be used if either: - function needs to be used as a module - function has a possibility of returning a TailcallVarargs

Overrides:
invoke in class VarArgFunction
Parameters:
args - the arguments to the function call.
Returns:
All return values as a Varargs instance.
See Also:
LuaValue.varargsOf(LuaValue[]), LuaValue.call(LuaValue), LuaValue.invoke(), LuaValue.invoke(LuaValue,Varargs), LuaValue.invokemethod(String,Varargs), LuaValue.invokemethod(LuaValue,Varargs)

debugSetupCall

public static void debugSetupCall(Varargs args,
                                  LuaValue[] stack)
Called by Closures to set up stack and arguments to next call


debugOnCall

public static void debugOnCall(LuaThread thread,
                               int calls,
                               LuaFunction func)
Called by Closures and recursing java functions on entry

Parameters:
thread - the thread for the call
calls - the number of calls in the call stack
func - the function called

debugOnReturn

public static void debugOnReturn(LuaThread thread,
                                 int calls)
Called by Closures and recursing java functions on return

Parameters:
thread - the thread for the call
calls - the number of calls in the call stack

debugBytecode

public static void debugBytecode(int pc,
                                 Varargs extras,
                                 int top)
Called by Closures on bytecode execution


_getinfo

protected static Varargs _getinfo(Varargs args,
                                  LuaValue level0func)

sourceshort

public static java.lang.String sourceshort(Prototype p)

traceback

public static java.lang.String traceback(int level)
Get a traceback as a string for the current thread


traceback

public static java.lang.String traceback(LuaThread thread,
                                         int level)
Get a traceback for a particular thread.

Parameters:
thread - LuaThread to provide stack trace for
level - 0-based level to start reporting on
Returns:
String containing the stack trace.

fileline

public static java.lang.String fileline()
Get file and line for the nearest calling closure.

Returns:
String identifying the file and line of the nearest lua closure, or the function name of the Java call if no closure is being called.

fileline

public static java.lang.String fileline(int level)
Get file and line for a particular level, even if it is a java function.

Parameters:
level - 0-based index of level to get
Returns:
String containing file and line info if available


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