Skip to content

Support inspecting large data structures on 4.x and 5.x versions of node.js #4951

@weinand

Description

@weinand

test item for microsoft/vscode-node-debug#11:

Inspecting large data structures results in slowness (unresponsiveness) issues in node.js because the v8 debugger protocol does not provide a way to access large data structures 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 "for free" even if nobody requested them. A consequence is that stepping through code with large arrays or buffers in local variables or parameters results in slowness and timeouts.

In node 0.12.x VS Code started to dynamically inject code into the node runtime to improve the v8 debugging protocol but this stopped working after the io.js/node.js reunion for 2.x and 3.x versions. After fix nodejs/node#4328 code injection started to work again in node.js 4.3.1 in the LTS stream. For the 5.x stable stream the code injection has to use a slightly different approach that started to work in node 5.6.

Verify for node.js >= 4.3.1 and node.js >= 5.6 that:

  • you can inspect large (~ 100000) arrays and buffers without node.js becoming unresponsive

Please note: this feature is not about objects with many properties. Objects with many properties will be addressed in microsoft/vscode-node-debug#18.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions