-
Notifications
You must be signed in to change notification settings - Fork 36.9k
Closed
Labels
debugDebug viewlet, configurations, breakpoints, adapter issuesDebug viewlet, configurations, breakpoints, adapter issuesfeature-requestRequest for new features or functionalityRequest for new features or functionality
Milestone
Description
Since the legacy node debug protocol is on its way out, we need to continue preparing a seamless transition to the inspector debug protocol.
Status:
node --debugwill print a deprecation message, probably in some 7.x release - lib: deprecate node --debug at runtime nodejs/node#10970- In Node 8, sending a SIGUSR1 signal to a node process will switch it into debug mode using the inspector debug protocol - Debug already running process using v8-inspector? nodejs/node#8464
- The legacy protocol is completely removed in V8 5.8 - Legacy JSON debug API removed as of V8 5.8 nodejs/node#9789
- It's not clear whether Node 8, released in probably April, will have V8 5.7 or 5.8. Seems likely that it will be 5.7 but we should be ready regardless - Node.js 8.0.0 Tracking Issue nodejs/node#10117
Possible February plan:
- Option 1:
- Wrap node and node2 in a single debug adapter. It checks the node version to be launched or attached to, and delegates to the proper debug adapter, using node2 when possible.
- It also registers 'node_legacy' to force the legacy debug adapter
- Option 2:
- Change 'node' to detect the node version and warn the user to change the type to node2 if it's after 8
- Then at some point in the future, rename node2 to node
It would be good to have a seamless experience like in option 1 - a user doesn't care which debug protocol they use. That should be our job, if possible. There are some issues to deal with though.
- When
runtimeExecutableis specified, we will have to leave it up to the user. We can't always figure out its node version. It might be a script or something that isn't node. It might be electron, which ships a version of node 6.5 that doesn't include --inspect. We can probably figure out what this failure looks like, and give a helpful warning. - When attaching, we should be able to figure out which protocol it's using. One easy difference is that under the inspector protocol, we can make an http request to
http://localhost:port.
Other things to do:
- Remove the 'experimental' tag on node2
- Implement attaching to a running process using node2 - Can't put running Node process into debug mode vscode-node-debug2#15
- Localize node2 (strings already go through a dummy localize function, just need to actually hook it up to nls and get translations) - Localize node2 vscode-node-debug2#83
auchenberg
Metadata
Metadata
Assignees
Labels
debugDebug viewlet, configurations, breakpoints, adapter issuesDebug viewlet, configurations, breakpoints, adapter issuesfeature-requestRequest for new features or functionalityRequest for new features or functionality