--- 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 $'
! !