-
Notifications
You must be signed in to change notification settings - Fork 220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Breakpoint Label frame to optimize debug stepping performance #2190
base: main
Are you sure you want to change the base?
Conversation
@SeeminglyScience @andyleejordan I made this a fairly minimal PR to be easy to review. Additional things I plan to do next as future incrementals
|
I'm super excited for all of this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@SeeminglyScience and I are going to take a closer look at this just to be sure nothing got missed.
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Outdated
Show resolved
Hide resolved
3fbc7b7
to
cc2e2a1
Compare
80b2351
to
9ce8911
Compare
cc2e2a1
to
f052fa5
Compare
This has been rebased to the latest prerelease and is good for re-review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Justin! Couple of questions and minor requests
src/PowerShellEditorServices/Services/DebugAdapter/DebugService.cs
Outdated
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Outdated
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Loving this, we finally got to review through it. Just a couple changes requested and then we want to get into pre-release.
VariableScope[] variableScopes = | ||
_debugService.GetVariableScopes( | ||
(int)request.FrameId); | ||
//We have an artificial breakpoint label, so just copy the stacktrace from the first stack entry for this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
//We have an artificial breakpoint label, so just copy the stacktrace from the first stack entry for this. | |
// We have an artificial breakpoint label, so just copy the stacktrace from the first stack entry for this. |
Could ou explain why this is either 0, or (and this is what's changed) FrameId - 1
? That means there are two instances where we get scope 0: FrameId == 0
and FrameId == 1
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Uh, there was a reason, but I honestly don't remember at this point. Let me check
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Outdated
Show resolved
Hide resolved
src/PowerShellEditorServices/Services/DebugAdapter/Handlers/StackTraceHandler.cs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 5 out of 5 changed files in this pull request and generated no suggestions.
@andyleejordan @SeeminglyScience your opinions have officially been deemed irrelevant by our AI overlords, please approve as is /s |
939e2c4
to
84b55f8
Compare
Co-authored-by: Patrick Meinecke <[email protected]>
f742b3d
to
47a2634
Compare
PR Summary
Implements DAP
DelayedStackTraceLoading
and returns an artificial breakpoint label frame based on the invocation info ASAP once the debugger stops. The rest of the stack trace is then returned on a future request that doesn't block the client UI.Capture.mp4
PR Context
Debug stepping takes 300ms+ due to waiting for stack trace collection via the slow
Get-PSCallStack
"hack". Further improvements will come around this later.