microsoft / debug-adapter-protocol

Defines a common protocol for debug adapters.
https://microsoft.github.io/debug-adapter-protocol/
Other
1.38k stars 128 forks source link

Provide a way for variables to be eagerly provided with the output #85

Open connor4312 opened 4 years ago

connor4312 commented 4 years ago

Investigating https://github.com/microsoft/vscode-pwa/issues/161, the call flow is:

  1. The debug adapter receives a log message
  2. It stores variables and tells the client that output was received, passing a variablesReference
  3. The program terminates
  4. The variables are never resolved / output is not shown because the session ended before the client requests the variables

The was not a problem in the previous JS adapter with the given example script simply because there's short circuit logic in the event that we only log a string--but this obviously isn't something that will work for all scenarios.

The clear way I see to solve this would be to allow the debug adapter to eagerly provide the variable reference in the output; I don't think there's really another good way to solve the race above short of holding the session open for some arbitrary period of time expecting that the client might request variables.

Trace of one scenario where this happened, which you can view using the tool.

This would also help solve https://github.com/microsoft/vscode-pwa/issues/122.

mhkeller commented 1 year ago

Chiming in here to say that I think this would be a feature that I would get utility from every day if it were implemented. I use the VS code debug output terminal and not getting colors based on variable type is a big drawback currently. It can lead to bugs where you can't easily distinguish between 1 as a number versus '1' as a string. Adding this ability would speed up everyday debugging workflows and match common expectations and functionality found elsewhere such as in Chrome dev tools and editor syntax highlighting.

As mentioned here:

A reasonable proposal would be to add an optionalvariable?: Variable property on the output event.

I see this issue is over three years old but I would still find it very useful to prioritize its implementation.

mhkeller commented 1 year ago

Just checking to see where this stood. Thanks for the time.