DebugView.st
changeset 8152 4720caf862eb
parent 8148 21180715dbe9
child 8154 d755b646fc9d
equal deleted inserted replaced
8151:b02059a52c1d 8152:4720caf862eb
   733      We move up the calling chain, skipping all intermediate Signal
   733      We move up the calling chain, skipping all intermediate Signal
   734      and Exception contexts, to present the context in which the error
   734      and Exception contexts, to present the context in which the error
   735      actually occured.
   735      actually occured.
   736      Just for your convenience :-)"
   736      Just for your convenience :-)"
   737 
   737 
   738     |con con2 found offset sel sel2 prev ex rcvr nMax idx|
   738     |con found offset sel prev ex rcvr nMax idx|
   739 
   739 
   740 "/ Transcript showCR:aContextArray.
   740 "/ Transcript showCR:aContextArray.
   741 
   741 
   742     nMax := aContextArray size.
   742     nMax := aContextArray size.
   743     nMax <= 1 ifTrue:[^ 1].
   743     nMax <= 1 ifTrue:[^ 1].
   878                 ].
   878                 ].
   879                 ^ idx+1
   879                 ^ idx+1
   880             ].
   880             ].
   881             ^ idx
   881             ^ idx
   882         ].
   882         ].
   883 
       
   884         "/ the above is all too hard-coded;
       
   885         "/ ask the method, if it thinks it should be skipped in the walkback.
       
   886         "/ as more methods get flagged, remove code from above.
       
   887         offset := 1.
   883         offset := 1.
       
   884     ].
       
   885 
       
   886     "/ the above is all too hard-coded;
       
   887     "/ ask the method, if it thinks it should be skipped in the walkback.
       
   888     "/ as more methods get flagged, remove code from above.
       
   889     con := aContextArray at:offset ifAbsent:nil.
       
   890 
       
   891     [ 
       
   892       con notNil
       
   893       and:[ con methodHome notNil
       
   894       and:[ con methodHome method notNil
       
   895       and:[ con methodHome method shouldBeSkippedInDebuggersWalkBack ]]]
       
   896     ] whileTrue:[
       
   897 "/ Transcript showCR:con methodHome method.
       
   898         offset := offset + 1.
   888         con := aContextArray at:offset ifAbsent:nil.
   899         con := aContextArray at:offset ifAbsent:nil.
   889 
   900     ].
   890         [ 
       
   891           con notNil
       
   892           and:[ con methodHome notNil
       
   893           and:[ con methodHome method notNil
       
   894           and:[ con methodHome method shouldBeSkippedInDebuggersWalkBack ]]]
       
   895         ] whileTrue:[
       
   896 Transcript showCR:con methodHome method.
       
   897             offset := offset + 1.
       
   898             con := aContextArray at:offset ifAbsent:nil.
       
   899         ].
       
   900         ^ offset
       
   901     ].
       
   902 
       
   903     con := found.
       
   904 
   901 
   905     "
   902     "
   906      got it; move up, skipping all intermediate Signal and
   903      got it; move up, skipping all intermediate Signal and
   907      Exception contexts
   904      Exception contexts
   908     "
   905     "
  4871     "show calling chain from aContext in the walk-back listview.
  4868     "show calling chain from aContext in the walk-back listview.
  4872      Ignore any non-interesting interrupt-context."
  4869      Ignore any non-interesting interrupt-context."
  4873 
  4870 
  4874     |con|
  4871     |con|
  4875 
  4872 
       
  4873     con := aContext.
  4876     verboseBacktrace ifFalse:[
  4874     verboseBacktrace ifFalse:[
  4877         con := aContext.
       
  4878         (con notNil and:[con selector == #threadSwitch:]) ifTrue:[
  4875         (con notNil and:[con selector == #threadSwitch:]) ifTrue:[
  4879             con := con sender.
  4876             con := con sender.
  4880             (con notNil and:[con selector == #timerInterrupt]) ifTrue:[
  4877             (con notNil and:[con selector == #timerInterrupt]) ifTrue:[
  4881                 con := con sender.
  4878                 con := con sender.
  4882             ].
  4879             ].
  6085 ! !
  6082 ! !
  6086 
  6083 
  6087 !DebugView class methodsFor:'documentation'!
  6084 !DebugView class methodsFor:'documentation'!
  6088 
  6085 
  6089 version
  6086 version
  6090     ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.431 2008-05-27 10:24:49 cg Exp $'
  6087     ^ '$Header: /cvs/stx/stx/libtool/DebugView.st,v 1.432 2008-05-27 20:59:47 cg Exp $'
  6091 ! !
  6088 ! !
  6092 
  6089 
  6093 DebugView initialize!
  6090 DebugView initialize!