43 lines
1.4 KiB
C
43 lines
1.4 KiB
C
#include "qjs_debug.h"
|
|
#include "qjs_macros.h"
|
|
#include "jsffi.h"
|
|
|
|
JSC_CCALL(debug_stack_depth, return number2js(js,js_debugger_stack_depth(js)))
|
|
JSC_CCALL(debug_build_backtrace, return js_debugger_build_backtrace(js,NULL))
|
|
JSC_CCALL(debug_closure_vars, return js_debugger_closure_variables(js,argv[0]))
|
|
JSC_CCALL(debug_local_vars, return js_debugger_local_variables(js, js2number(js,argv[0])))
|
|
JSC_CCALL(debug_fn_info, return js_debugger_fn_info(js, argv[0]))
|
|
JSC_CCALL(debug_backtrace_fns, return js_debugger_backtrace_fns(js,NULL))
|
|
|
|
#include "blob.h"
|
|
|
|
void dump_writer(blob *b, const char *buf, size_t len)
|
|
{
|
|
blob_write_bytes(b, buf, len);
|
|
}
|
|
|
|
JSC_CCALL(debug_dump,
|
|
JSPrintValueOptions opt = {0};
|
|
opt.show_hidden=1;
|
|
blob *write = blob_new(8*100);
|
|
JS_PrintValue(js, dump_writer, write, argv[0], &opt);
|
|
int bytes = write->bit_length/8;
|
|
ret = JS_NewStringLen(js, write->data, bytes);
|
|
blob_destroy(write);
|
|
)
|
|
|
|
static const JSCFunctionListEntry js_debug_funcs[] = {
|
|
MIST_FUNC_DEF(debug, stack_depth, 0),
|
|
MIST_FUNC_DEF(debug, build_backtrace, 0),
|
|
MIST_FUNC_DEF(debug, closure_vars, 1),
|
|
MIST_FUNC_DEF(debug, local_vars, 1),
|
|
MIST_FUNC_DEF(debug, fn_info, 1),
|
|
MIST_FUNC_DEF(debug, backtrace_fns,0),
|
|
MIST_FUNC_DEF(debug, dump, 1),
|
|
};
|
|
|
|
JSValue js_debug_use(JSContext *js) {
|
|
JSValue mod = JS_NewObject(js);
|
|
JS_SetPropertyFunctionList(js,mod,js_debug_funcs,countof(js_debug_funcs));
|
|
return mod;
|
|
} |