feat(node): Collect Local Variables via a worker #11586
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Our Local Variables integration is limited by the fact that it executes debugger commands from the main app thread. This means that no async work can be completed while the debugger is paused and local variables are being collected. This in turn means that all the synchronous work needs to be queued which risks stack overflows. For this reason we've limited local variable collection to the 5 frames closest to the top of the stack.
When debugging from a worker thread, there are no such limitations around performing async work during debugger pause.
This PR adds a worker thread which is tasked with collecting local variables when the debugger pauses. It passes these back to the main thread via IPC which are then later added to event stack frames.
Possible Improvements
It's possible to combine both ANR and Local Variables into a single worker thread.