Skip to content

Support Node debug protocol autodetection alongside dynamically putting proc into debug mode #25036

Closed
@roblourens

Description

@roblourens

I need to support "processId": "${command:PickProcess}" in a launch config for the 'inspector' protocol. In Node 8, when a SIGUSR1 signal is sent to the process, it will be in debug mode for the inspector protocol instead of the legacy protocol.

Currently, startSession does protocol detection for attach, then picks the debug adapter, then the command:PickProcess variable is resolved to execute the PickProcess command. Then the debug adapter sees the PID and sends the signal to put it into debug mode. We need to flip this around so that the process can be put into debug mode, then the protocol detected, so the adapter can be selected.

One possibility:

  1. startSession, when detecting the protocol for 'attach', checks processID, and resolves the command variable manually to run the PickProcess command, instead of letting vscode do it
  2. PickProcess runs, then we send the SIGUSR1 signal to that PID. We can't pick the port in this case.
  3. Then we do protocol detection. We try each default port, not knowing whether it actually belongs to the PID in question.
    ~ Or, we need the user to know which port will be used. But in that case, they may as well just set 'protocol' too because the two are dependent. (Or we look at port number to assume which protocol, instead of autodetect)
  4. Continue as usual

That's not totally satisfactory because of the slim chance of attaching to the wrong process, or requiring the user to set the port. It's maybe the best we can do. Thoughts @weinand, @isidorn?

Metadata

Metadata

Labels

debugDebug viewlet, configurations, breakpoints, adapter issuesfeature-requestRequest for new features or functionalityon-testplan

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions