public class DebugLib extends TwoArgFunction
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
org.luaj.vm2.lib.jme.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.
LibFunction,
JsePlatform,
org.luaj.vm2.lib.jme.JmePlatform,
Lua 5.2 Debug Lib Reference| 限定符和类型 | 类和说明 |
|---|---|
static class |
DebugLib.CallFrame |
static class |
DebugLib.CallStack |
static class |
DebugLib.NameWhat |
| 限定符和类型 | 字段和说明 |
|---|---|
static boolean |
CALLS |
static boolean |
TRACE |
name, opcodes_metatableADD, BAND, BNOT, BOR, BXOR, CONCAT, DIV, EMPTYSTRING, ENV, EQ, FALSE, IDIV, INDEX, LE, LEN, LT, METATABLE, MINUSONE, MOD, MODE, MUL, NEWINDEX, NIL, NILS, NONE, NOVALS, ONE, POW, SHL, SHR, SUB, TBOOLEAN, TFUNCTION, TINT, TLIGHTUSERDATA, TNIL, TNONE, TNUMBER, TOSTRING, TRUE, TSTRING, TTABLE, TTHREAD, TUSERDATA, TVALUE, TYPE_NAMES, UNM, uservalue, ZERO| 构造器和说明 |
|---|
DebugLib() |
| 限定符和类型 | 方法和说明 |
|---|---|
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.
|
DebugLib.CallFrame |
getCallFrame(int level) |
static 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() |
String |
traceback(int level) |
call, call, call, invokecheckfunction, classnamestub, getfenv, getmetatable, isfunction, name, optfunction, setfenv, strvalue, type, typenameadd, add, add, and, arg, arg1, argerror, argerror, aritherror, aritherror, arithmt, arithmtwith, assert_, band, band, bnot, bor, bor, buffer, bxor, bxor, 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, getuservalue, gt_b, gt_b, gt_b, gt, gt, gt, gteq_b, gteq_b, gteq_b, gteq, gteq, gteq, idiv, idiv, 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, jcall, jget, jset, 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, setuservalue, shl, shl, shr, shr, 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, valueOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOf, varargsOfargcheck, checkboolean, checkclosure, checkdouble, checkfunction, checkint, checkinteger, checkjstring, checklong, checknotnil, checknumber, checkstring, checktable, checkthread, checkuserdata, checkuserdata, checkvalue, dealias, 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, typepublic LuaValue call(LuaValue modname, LuaValue env)
call 在类中 TwoArgFunctionmodname - the module name supplied if this is loaded via 'require'.env - the environment to load into, which must be a Globals instance.(this(arg1,arg2)), or LuaValue.NIL if there were none.LuaValue.call(),
LuaValue.call(LuaValue),
LuaValue.call(LuaValue, LuaValue, LuaValue),
LuaValue.invoke(LuaValue, Varargs),
LuaValue.method(String,LuaValue,LuaValue),
LuaValue.method(LuaValue,LuaValue,LuaValue)public void onCall(LuaFunction f)
public void onCall(LuaClosure c, Varargs varargs, LuaValue[] stack)
public void onInstruction(int pc,
Varargs v,
int top)
public void onReturn()
public DebugLib.CallFrame getCallFrame(int level)
public String traceback(int level)
public static DebugLib.NameWhat getobjname(Prototype p, int lastpc, int reg)
Copyright © 2020. All rights reserved.