diff options
author | iain holmes <iain@xamarin.com> | 2018-01-19 14:34:22 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2020-01-21 21:57:16 +0300 |
commit | daeb98d1f059f27c8afd81aafe0a568b9fdb5c71 (patch) | |
tree | d75c81456a6b294d9f6d0788a5cf44a7fb1f0e53 /main | |
parent | d02f67c11fa055b67b5e55c0b344706a49ec1e40 (diff) |
[Debugger] Can't edit function breakpoint
Enable editing of breakpoint locations, either line, function or exception
Fixes VSTS #528267
Diffstat (limited to 'main')
-rw-r--r-- | main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs index 2d31fada3a..1a92be8320 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs @@ -364,6 +364,12 @@ namespace MonoDevelop.Debugger fb.ParamTypes = parsedParamTypes; } + void SaveCatchpoint (Catchpoint cp) + { + cp.ExceptionName = entryExceptionType.Text; + cp.IncludeSubclasses = checkIncludeSubclass.Active; + } + class ParsedLocation { int line; @@ -461,14 +467,17 @@ namespace MonoDevelop.Debugger void OnSave (object sender, EventArgs e) { + bool catchpointSaved = false; + if (be == null) { if (stopOnFunction.Active) be = new FunctionBreakpoint ("", "C#"); else if (stopOnLocation.Active) be = breakpointLocation.ToBreakpoint (); - else if (stopOnException.Active) + else if (stopOnException.Active) { be = new Catchpoint (entryExceptionType.Text, checkIncludeSubclass.Active); - else + catchpointSaved = true; + } else return; } @@ -480,6 +489,13 @@ namespace MonoDevelop.Debugger if (bp != null) SaveBreakpoint (bp); + if (!catchpointSaved) { + var cp = be as Catchpoint; + if (cp != null) { + SaveCatchpoint (cp); + } + } + if ((HitCountMode)ignoreHitType.SelectedItem == HitCountMode.GreaterThanOrEqualTo && (int)ignoreHitCount.Value == 0) { be.HitCountMode = HitCountMode.None; } else { @@ -518,10 +534,11 @@ namespace MonoDevelop.Debugger } // Check which radio is selected. - hboxFunction.Sensitive = stopOnFunction.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints) && !editing; - hboxLocation.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints) && !editing; - hboxException.Sensitive = stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints) && !editing; - checkIncludeSubclass.Sensitive = stopOnException.Active && !editing; + var connected = DebuggingService.DebuggerSession != null ? DebuggingService.DebuggerSession.IsConnected : false; + hboxFunction.Sensitive = stopOnFunction.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints) && !connected; + hboxLocation.Sensitive = stopOnLocation.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Breakpoints) && !connected; + hboxException.Sensitive = stopOnException.Active && DebuggingService.IsFeatureSupported (DebuggerFeatures.Catchpoints) && !connected; + checkIncludeSubclass.Sensitive = stopOnException.Active; hboxCondition.Sensitive = DebuggingService.IsFeatureSupported (DebuggerFeatures.ConditionalBreakpoints); // Check printing an expression. |