0

我正在尝试用 nodejs 做一些有趣的事情,这需要我在 javascipt that 中运行单个语句shows all the objects that are present in the current context

这些对象可能只是由我或 nodejs 环境创建的。

这在 javascript 中有帮助吗?

一种用途可以用于调试目的。

4

1 回答 1

0

从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”关键字,检查结果,然后继续设置/更改脚本中的断点。

查看它在 nodenode-vim-debugger中的使用方式,如果缺少某些内容,请参阅V8 调试器协议文档

请注意,您可以从正在调试的脚本本身访问类似的 API,看看它是如何用于在脚本开头设置断点的

// script is a reference to Script object, see "vm" module
global.v8debug.Debug.setBreakPoint(script, 0, 0);
于 2013-09-26T06:56:50.750 回答