From 96eb361af8d04d7821343ea2d59f61f0efcdd54c Mon Sep 17 00:00:00 2001 From: Robert Holt Date: Wed, 30 Oct 2019 14:46:55 -0700 Subject: [PATCH] Reinstate debugging API lost in #10338 (#10808) --- .../engine/debugger/debugger.cs | 39 +++++++++++++++++++ .../engine/hostifaces/PSTask.cs | 7 ++++ .../engine/remoting/client/Job.cs | 7 ++++ .../engine/remoting/client/remoterunspace.cs | 7 ++++ .../server/ServerRunspacePoolDriver.cs | 7 ++++ 5 files changed, 67 insertions(+) diff --git a/src/System.Management.Automation/engine/debugger/debugger.cs b/src/System.Management.Automation/engine/debugger/debugger.cs index 8468edb0c0..80eba6ee76 100644 --- a/src/System.Management.Automation/engine/debugger/debugger.cs +++ b/src/System.Management.Automation/engine/debugger/debugger.cs @@ -625,6 +625,13 @@ namespace System.Management.Automation public virtual Breakpoint GetBreakpoint(int id) => throw new PSNotImplementedException(); + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// Breakpoints. + public virtual void SetBreakpoints(IEnumerable breakpoints) => + throw new PSNotImplementedException(); + /// /// Returns breakpoints primarily for the Get-PSBreakpoint cmdlet. /// @@ -2580,6 +2587,31 @@ namespace System.Management.Automation #region Breakpoints + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// + public override void SetBreakpoints(IEnumerable breakpoints) + { + foreach (Breakpoint bp in breakpoints) + { + switch (bp) + { + case CommandBreakpoint commandBreakpoint: + AddCommandBreakpoint(commandBreakpoint); + continue; + + case LineBreakpoint lineBreakpoint: + AddLineBreakpoint(lineBreakpoint); + continue; + + case VariableBreakpoint variableBreakpoint: + AddVariableBreakpoint(variableBreakpoint); + continue; + } + } + } + /// /// Get a breakpoint by id, primarily for Enable/Disable/Remove-PSBreakpoint cmdlets. /// @@ -4048,6 +4080,13 @@ namespace System.Management.Automation #region Overrides + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// Breakpoints. + public override void SetBreakpoints(IEnumerable breakpoints) => + _wrappedDebugger.SetBreakpoints(breakpoints); + /// /// Process debugger or PowerShell command/script. /// diff --git a/src/System.Management.Automation/engine/hostifaces/PSTask.cs b/src/System.Management.Automation/engine/hostifaces/PSTask.cs index a0018955d7..9a17e20252 100644 --- a/src/System.Management.Automation/engine/hostifaces/PSTask.cs +++ b/src/System.Management.Automation/engine/hostifaces/PSTask.cs @@ -1087,6 +1087,13 @@ namespace System.Management.Automation.PSTasks return _wrappedDebugger.ProcessCommand(command, output); } + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// List of breakpoints. + public override void SetBreakpoints(IEnumerable breakpoints) => + _wrappedDebugger.SetBreakpoints(breakpoints); + /// /// Sets the debugger resume action. /// diff --git a/src/System.Management.Automation/engine/remoting/client/Job.cs b/src/System.Management.Automation/engine/remoting/client/Job.cs index 18a5094228..edaf96c1ad 100644 --- a/src/System.Management.Automation/engine/remoting/client/Job.cs +++ b/src/System.Management.Automation/engine/remoting/client/Job.cs @@ -3909,6 +3909,13 @@ namespace System.Management.Automation return _wrappedDebugger.ProcessCommand(command, output); } + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// Breakpoints. + public override void SetBreakpoints(IEnumerable breakpoints) => + _wrappedDebugger.SetBreakpoints(breakpoints); + public override Breakpoint GetBreakpoint(int id) => _wrappedDebugger.GetBreakpoint(id); diff --git a/src/System.Management.Automation/engine/remoting/client/remoterunspace.cs b/src/System.Management.Automation/engine/remoting/client/remoterunspace.cs index 594ab4a525..ed291bfa43 100644 --- a/src/System.Management.Automation/engine/remoting/client/remoterunspace.cs +++ b/src/System.Management.Automation/engine/remoting/client/remoterunspace.cs @@ -2006,6 +2006,13 @@ namespace System.Management.Automation } } + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// Breakpoints. + public override void SetBreakpoints(IEnumerable breakpoints) => + _runspace.Debugger?.SetBreakpoints(breakpoints); + /// /// Get a breakpoint by id, primarily for Enable/Disable/Remove-PSBreakpoint cmdlets. /// diff --git a/src/System.Management.Automation/engine/remoting/server/ServerRunspacePoolDriver.cs b/src/System.Management.Automation/engine/remoting/server/ServerRunspacePoolDriver.cs index de9a903f06..217d6db64e 100644 --- a/src/System.Management.Automation/engine/remoting/server/ServerRunspacePoolDriver.cs +++ b/src/System.Management.Automation/engine/remoting/server/ServerRunspacePoolDriver.cs @@ -1842,6 +1842,13 @@ namespace System.Management.Automation get { return _inDebugMode; } } + /// + /// Adds the provided set of breakpoints to the debugger. + /// + /// List of breakpoints. + public override void SetBreakpoints(IEnumerable breakpoints) => + _wrappedDebugger.Value.SetBreakpoints(breakpoints); + public override Breakpoint GetBreakpoint(int id) => _wrappedDebugger.Value.GetBreakpoint(id);