Tools__NewSystemBrowser.st
changeset 19180 90b28d821efb
parent 19175 9af38e5e3132
child 19191 39c1971d868b
--- a/Tools__NewSystemBrowser.st	Sun Sep 15 10:19:20 2019 +0200
+++ b/Tools__NewSystemBrowser.st	Sun Sep 15 11:13:08 2019 +0200
@@ -9962,6 +9962,11 @@
             itemValue: debugMenuRemoveAllBreakpoints
           )
          (MenuItem
+            enabled: hasIgnoredBreakpoints
+            label: 'Stop ignoring Breakpoints'
+            itemValue: debugMenuStopIgnoringBreakpoints
+         )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -22657,6 +22662,12 @@
     "Created: / 18-02-2012 / 16:59:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+hasIgnoredBreakpoints
+    ^ DebugView hasIgnoredHalts
+
+    "Modified: / 28-02-2012 / 16:26:35 / cg"
+!
+
 hasInstanceMethodsSelected
     ^ self hasOnlyMethodsSelectedForWhich:[:m | m mclass isMeta not]
 
@@ -41326,6 +41337,16 @@
      (it is as yet untested, if trace/break stacking works, as
      technicall, it may work, but the UI must handle wrapped-wrappedMethods gracefully..)"
 
+    self commonTraceHelperWith:aSelector with:argumentOrNil with:nil clear:doClearAnyPreviousWrap
+!
+
+commonTraceHelperWith:aSelector with:argument1OrNil with:argument2OrNil clear:doClearAnyPreviousWrap
+    "install a break/trace or countPoint for the current method(s).
+     If doClearAnyPreviousWrap is true, a previous break/trace on that method is
+     removed first.
+     (it is as yet untested, if trace/break stacking works, as
+     technicall, it may work, but the UI must handle wrapped-wrappedMethods gracefully..)"
+
     |anyHaltIgnored alsoRemoveStatementBreakpoints|
 
     alsoRemoveStatementBreakpoints := nil.    "/ tri-state !!
@@ -41351,11 +41372,7 @@
             aSelector == #changeUpdateTrace ifTrue:[
                 MessageTracer traceUpdateMethod:mthd on:Transcript
             ] ifFalse:[
-                aSelector numArgs == 0 ifTrue:[
-                    mthd perform:aSelector.
-                ] ifFalse:[
-                    mthd perform:aSelector with:argumentOrNil.
-                ]
+                mthd perform:aSelector withOptionalArgument:argument1OrNil and:argument2OrNil
             ].
 
             (aSelector == #clearBreakPoint) ifTrue:[
@@ -41558,11 +41575,19 @@
     "set a breakpoint on the current method(s), which only trigger(s) if
      executed by some particular process."
 
-    |process|
-
-    process := self chooseProcess:'Stop if method is executed by process'.
+    |process includeChildProcesses|
+
+    includeChildProcesses := false asValue.
+    Dialog 
+        withCheckBoxFor:includeChildProcesses 
+        labelled:'Also break in (new) subprocesses of the selected'
+        do:[
+            process := self chooseProcess:'Stop if method is executed by process'.
+    ].
     process notNil ifTrue:[
-        self commonTraceHelperWith:#'breakPointInProcess:' with:process clear:true
+        self commonTraceHelperWith:#'breakPointInProcess:withChildProcesses:' 
+             with:process with:(includeChildProcesses value)
+             clear:true
     ]
 
     "Created: / 14-10-1996 / 15:40:53 / cg"
@@ -41866,6 +41891,12 @@
     self commonTraceHelperWith:#stopCounting with:nil clear:true
 !
 
+debugMenuStopIgnoringBreakpoints
+    "no longer ignore breakpoints"
+
+    DebugView stopIgnoringHalts
+!
+
 debugMenuStopMemoryUsage
     "stop counting of memory usage for this method"