我正在尝试用 nodejs 做一些有趣的事情,这需要我在 javascipt that 中运行单个语句shows all the objects that are present in the current context
。
这些对象可能只是由我或 nodejs 环境创建的。
这在 javascript 中有帮助吗?
一种用途可以用于调试目的。
我正在尝试用 nodejs 做一些有趣的事情,这需要我在 javascipt that 中运行单个语句shows all the objects that are present in the current context
。
这些对象可能只是由我或 nodejs 环境创建的。
这在 javascript 中有帮助吗?
一种用途可以用于调试目的。
从js级别不可能。您可以从调试器中获取所有框架和闭包范围变量(而且它很容易自动化 - require('_debugger')
。如果您准备好尝试这样做,我可以解释V8 调试器协议的详细信息并为其内置 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”关键字,检查结果,然后继续设置/更改脚本中的断点。
查看它在 node、node-vim-debugger中的使用方式,如果缺少某些内容,请参阅V8 调试器协议文档
请注意,您可以从正在调试的脚本本身访问类似的 API,看看它是如何用于在脚本开头设置断点的
// script is a reference to Script object, see "vm" module
global.v8debug.Debug.setBreakPoint(script, 0, 0);