DebugView.st
changeset 949 cf980155a791
parent 945 bbda9364e4c8
child 950 f1df338e6a78
--- a/DebugView.st	Sun Jan 12 00:00:33 1997 +0100
+++ b/DebugView.st	Sun Jan 12 01:13:05 1997 +0100
@@ -2429,7 +2429,7 @@
 setContext:aContext releaseInspectors:releaseInspectors
     "show calling chain from aContext in the walk-back listview"
 
-    |con text method caller caller2 m count showIt c suspendContext|
+    |con text method caller caller2 m count showIt c suspendContext nm|
 
     (contextArray notNil and:[aContext == (contextArray at:1)]) ifTrue:[
         "no change"
@@ -2472,7 +2472,7 @@
                 ]
             ].
             suspendContext notNil ifTrue:[
-                con := suspendContext.
+                con := suspendContext. suspendContext := nil
             ].
         ].
 
@@ -2480,22 +2480,25 @@
          get them all
         "
         count := 0.
+
         [con notNil and:[count <= nChainShown]] whileTrue:[
+
             (self showingContext:con) ifTrue:[
                 contextArray add:con. count := count + 1.
 
                 (MoreDebuggingDetail == true) ifTrue:[
-                    text add:(((ObjectMemory addressOf:con) printStringRadix:16) , ' ' , con printString).
+                    nm := (((ObjectMemory addressOf:con) printStringRadix:16) , ' ' , con printString).
                 ] ifFalse:[
-                    text add:con printString.
+                    nm := con printString.
                 ].
+                text add:nm
             ].
 
             method := con method.
             (method notNil and:[method isWrapped]) ifTrue:[
-                "
-                 kludge: if its a wrapped method, then hide the wrap-call
-                "
+                "/
+                "/ kludge: if its a wrapped method, then hide the wrap-call
+                "/
                 caller := con sender.
                 (caller notNil and:[caller receiver == method originalMethod]) ifTrue:[
                     caller2 := caller sender.
@@ -2505,6 +2508,21 @@
                 ].
                 caller := caller2 := nil
             ].
+
+            "/ with dense backtrace, skip the doIt methods context
+            "/ (its dummy anyway) and fake that contexts name
+
+            (con isBlockContext
+             and:[con home == con sender
+             and:[((con home selector == #doIt)
+                   or:[con home selector == #doIt:])
+             and:[con home method who isNil]]]) ifTrue:[
+                verboseBacktrace ~~ true ifTrue:[
+                    con := con sender.
+                    text removeLast.
+                    text add:(con methodHome printString)
+                ]
+            ].
             con := con sender
         ].
 
@@ -2512,13 +2530,31 @@
          did we reach the end ?
         "
         (con isNil or:[con sender isNil]) ifTrue:[
-            "
-             the very last one is the startup context
-             (in main) - it has nil as receiver and nil as selector
-            "
+
+            "/ the very last one is the startup context
+            "/ (in main) - it has nil as receiver and nil as selector
+
             contextArray last selector isNil ifTrue:[
                 contextArray removeLast.
                 text removeLast
+            ].
+
+            verboseBacktrace ~~ true ifTrue:[
+                "/ in dense mode, remove the process startup
+                "/ contexts (if any)
+
+                (con := contextArray last) methodClass == Process ifTrue:[
+                    con selector == #start ifTrue:[
+                        contextArray removeLast.
+                        text removeLast.
+
+                        [contextArray size > 0
+                         and:[contextArray last methodHome == con]] whileTrue:[
+                            contextArray removeLast.
+                            text removeLast.
+                        ]
+                    ]
+                ]
             ]
         ] ifFalse:[
             m notNil ifTrue:[
@@ -2544,7 +2580,7 @@
     ^ true
 
     "Created: 14.12.1995 / 19:10:31 / cg"
-    "Modified: 11.1.1997 / 18:49:50 / cg"
+    "Modified: 12.1.1997 / 00:15:08 / cg"
 !
 
 setContextSkippingInterruptContexts:aContext
@@ -2802,8 +2838,8 @@
 
             answer := Dialog 
                         choose:('error in debugger: ' , ex errorString , '\\debug again ?') withCRs
-                        labels:#('debug' 'proceed' 'cancel' ) 
-                        values:#(#debug #proceed #cancel) 
+                        labels:#( 'proceed' 'cancel' 'debug' ) 
+                        values:#( #proceed #cancel #debug ) 
                         default:#cancel.
             answer == #debug ifTrue:[
                 Debugger enterUnconditional:(ex suspendedContext) withMessage:'error in debugger: ' , ex errorString.
@@ -2821,7 +2857,7 @@
     catchBlock := nil.
 
     "Created: 24.11.1995 / 20:33:45 / cg"
-    "Modified: 10.1.1997 / 17:36:17 / cg"
+    "Modified: 11.1.1997 / 22:21:43 / cg"
 ! !
 
 !DebugView methodsFor:'user interaction'!
@@ -3238,5 +3274,5 @@
 !DebugView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.130 1997-01-11 19:58:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.131 1997-01-12 00:13:05 cg Exp $'
 ! !