<p dir="auto">Id: <b>4f3e6055-db00-b505-57ef-2fbd3cb89778</b><br><br><em>Versions</em> <br>- 0.10.1-release<br><em>Stack</em> <br>[/vs/workbench/parts/debug/node/rawDebugSession.ts#L68:28 (RawDebugSession.send)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/rawDebugSession.ts#L68:28">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/rawDebugSession.ts#L68:28</a> %28RawDebugSession.send%29)<br>[vs/workbench/vs/base/common/winjs.base.raw.js#L1470:0 (onError)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1470:0">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1470:0</a> %28onError%29)<br>[vs/workbench/vs/base/common/winjs.base.raw.js#L1176:0 (_notify)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1176:0">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1176:0</a> %28_notify%29)<br>[vs/workbench/vs/base/common/winjs.base.raw.js#L1343:0 (enter)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1343:0">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1343:0</a> %28enter%29)<br>[vs/workbench/vs/base/common/winjs.base.raw.js#L1316:0 (_run)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1316:0">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/srcvs/workbench/vs/base/common/winjs.base.raw.js#L1316:0</a> %28_run%29)<br>[/vs/workbench/parts/debug/node/v8Protocol.ts#L61:5 (V8Protocol.send)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L61:5">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L61:5</a> %28V8Protocol.send%29)<br>[/vs/workbench/parts/debug/node/v8Protocol.ts#L127:4 (V8Protocol.dispatch)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L127:4">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L127:4</a> %28V8Protocol.dispatch%29)<br>[/vs/workbench/parts/debug/node/v8Protocol.ts#L96:11 (V8Protocol.handleData)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L96:11">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L96:11</a> %28V8Protocol.handleData%29)<br>[/vs/workbench/parts/debug/node/v8Protocol.ts#L51:8 (V8Protocol.connect)](<a href="https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L51:8">https://github.com/microsoft/vscode/blob/df352367df2efcfa9d602d471e4e2f42140a0f05/src/vs/workbench/parts/debug/node/v8Protocol.ts#L51:8</a> %28V8Protocol.connect%29)<br>    at Socket. (out/vs/workbench/workbench.main.js:1593:24200)<br>    at emitOne (events.js:77:13)<br></p>
<p dir="auto">Inspecting large data structures results in slowness (unresponsiveness) issues in node &gt;= 3.x.</p>
<p dir="auto">The problem is the node debugger protocol which does not provide a way to access arrays or dicts in chunks. Always the full thing travels over the wire. A particular nasty issue is that local variables are included in the stack frame object even if nobody requested them. A consequence is that stepping through code with large arrays, Buffers, or dicts in local variables results in slowness and timeouts.</p>
<p dir="auto">Up to node 0.12.x we did some code injection into the debugger to work around these issues and they were quite effective. If possible, just try to use node 0.12.9 and you will notice the difference.</p>
<p dir="auto">For node 4.x and 5.x we haven't figured out how to do the same trick, but we are working on it.</p>