我正在尝试使用nodejs做一些有趣的事情,这需要我在shows all the objects that are present in the current context
的javascipt中运行一个语句。
这些对象可能只是由我或nodejs环境创建的。
这是否在javascript中得到了促进?
一种用途可用于调试目的。
答案 0 :(得分:0)
从js级别不可能。您可以从调试器中获取所有框架和闭包范围变量(并且它很容易自动化 - require('_debugger')
。如果这是您准备尝试的内容,我可以解释V8 debugger protocol的详细信息并在node.js客户端中内置为了它。
更新
来自节点核心的调试器客户端的基本用法:
var DebuggerClient = require('_debugger').Client;
var dc = new DebuggerClient();
dc.connect(5858); // you need to start your script with "node --debug-brk=5858 script-to-debug.js"
// listen breakpoint:
dc.on('break', function(res) {
// sctipt id, line, location here
dc.reqBacktrace(function(err, res) {
// res.frames array
});
dc.reqScopes(function(scopes) {
// SCOPES! TADAM!
});
});
首先尝试使用“debugger”关键字,检查结果,然后继续设置/更改脚本中的断点。
在used in node中查看它是node-vim-debugger的方式,如果缺少某些内容,请参阅V8 debugger protocol documentation
请注意,您可以从正在调试的脚本中访问similar API,了解it is used to set breakpoint at the beginning of the script
的方式// script is a reference to Script object, see "vm" module
global.v8debug.Debug.setBreakPoint(script, 0, 0);