使用Jetbrains调试节点变量范围

时间:2016-05-30 19:16:57

标签: javascript node.js intellij-idea phpstorm webstorm

以下是我正在使用的代码段。

'use strict';

const obj = { prop: null };

setTimeout(() => {
    let localObj = obj;
    debugger;
}, 3000);

process.on('exit', () => {
    debugger;
});

debugger;

我在使用Jetbrains产品调试Node变量范围时遇到问题(这里是PhpStorm 2016)。

在回调上下文中使用第一个断点(setTimeout回调)obj时,调试器监视器可以看到它:

enter image description here

在第二个断点(退出回调)obj对调试器监视不可见。 obj出现在 Closure (setTimeout回调范围)中,但不出现在 Local 中。

enter image description here

如果在回调函数中提到obj,则调试器可以看到它。如果它出现在断点之前或之后的函数中并不重要。否则它会保持不可见,就像没有父功能范围一样。

这里的目标是在某些时候(退出或其他)不引人注意地观察本地模块变量(一次可能有十几个POI)。

我已经习惯了那些很酷的家伙使用调试器'。但是,如果应该在子范围中明确提到父范围变量以使调试器可见,我就无法理解这可能是什么样的更酷的'比

`process.on('exit', () => console.log(obj));`

导致此行为的原因是什么?这是Node和/或V8和/或Jetbrains调试器的已知限制吗?有更好的方法吗?

0 个答案:

没有答案