我正在尝试用 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);