DebugView.st
branchjv
changeset 17519 94661347fc81
parent 17379 028adf14bc05
child 17520 34af9a65c309
equal deleted inserted replaced
17518:b7688f8c4d7a 17519:94661347fc81
     1 "{ Encoding: utf8 }"
       
     2 
       
     3 "
     1 "
     4  COPYRIGHT (c) 1989 by Claus Gittinger
     2  COPYRIGHT (c) 1989 by Claus Gittinger
     5               All Rights Reserved
     3               All Rights Reserved
     6 
     4 
     7  This software is furnished under a license and may be used
     5  This software is furnished under a license and may be used
    34 		isStoppedAtBreakPointWithParameter breakPointParameter
    32 		isStoppedAtBreakPointWithParameter breakPointParameter
    35 		hideSupportCode contextInfoLabel resendButton
    33 		hideSupportCode contextInfoLabel resendButton
    36 		gotoDialogOpenerButton isStoppedInModalDialog selectorToDefine
    34 		gotoDialogOpenerButton isStoppedInModalDialog selectorToDefine
    37 		classToDefineIn gotoApplicationActionMethodButton
    35 		classToDefineIn gotoApplicationActionMethodButton
    38 		isStoppedInApplicationAction isStoppedAtStatementBreakpoint
    36 		isStoppedInApplicationAction isStoppedAtStatementBreakpoint
    39 		verboseBacktraceHolder'
    37 		verboseBacktraceHolder keyboardMap'
    40 	classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
    38 	classVariableNames:'CachedDebugger CachedExclusive OpenDebuggers MoreDebuggingDetail
    41 		DebuggingDebugger DebuggingDebugger2 DebuggingContextWalk
    39 		DebuggingDebugger DebuggingDebugger2 DebuggingContextWalk
    42 		DefaultDebuggerBackgroundColor InitialNChainShown IgnoredHalts
    40 		DefaultDebuggerBackgroundColor InitialNChainShown IgnoredHalts
    43 		ShowThreadID LastIgnoreHaltNTimes LastIgnoreHaltDuration
    41 		ShowThreadID LastIgnoreHaltNTimes LastIgnoreHaltDuration
    44 		LastExtent LastOrigin RememberedCallChain DebuggingDebugger3
    42 		LastExtent LastOrigin RememberedCallChain DebuggingDebugger3
    45 		NumberOfDebuggers DebuggerOnMainDisplayOnly'
    43 		NumberOfDebuggers DebuggerOnMainDisplayOnly'
    46 	poolDictionaries:''
    44 	poolDictionaries:''
    47 	category:'Interface-Debugger'
    45 	category:'Interface-Debugger'
    48 !
    46 !
    49 
    47 
       
    48 DebugView class instanceVariableNames:'defaultKeyboardMap'
       
    49 
       
    50 "
       
    51  The following class instance variables are inherited by this class:
       
    52 
       
    53 	StandardSystemView - 
       
    54 	TopView - 
       
    55 	View - 
       
    56 	SimpleView - ClassResources DefaultFont
       
    57 	DisplaySurface - 
       
    58 	GraphicsMedium - 
       
    59 	Object - 
       
    60 "
       
    61 !
       
    62 
    50 Object subclass:#IgnoredHaltOrBreakpoint
    63 Object subclass:#IgnoredHaltOrBreakpoint
    51 	instanceVariableNames:'ignoreEndTime ignoreCount ignoreUntilShiftKeyPressed
    64 	instanceVariableNames:'ignoreEndTime ignoreCount ignoreUntilShiftKeyPressed
    52 		ignoredReceiverClasses ignoredProcesses
    65 		ignoredReceiverClasses ignoredProcesses
    53 		ignoredSendingClassAndSelectors'
    66 		ignoredSendingClassAndSelectors'
    54 	classVariableNames:''
    67 	classVariableNames:''
   148 
   161 
   149     "Created: 20.3.1997 / 16:53:37 / cg"
   162     "Created: 20.3.1997 / 16:53:37 / cg"
   150     "Modified: 20.3.1997 / 16:54:32 / cg"
   163     "Modified: 20.3.1997 / 16:54:32 / cg"
   151 !
   164 !
   152 
   165 
       
   166 initializeDefaultKeyboardMap
       
   167     defaultKeyboardMap := KeyboardMap new.
       
   168     defaultKeyboardMap 
       
   169         bindValue: #DebuggerContinue to: #F9;
       
   170         bindValue: #DebuggerNext to: #F8;
       
   171         bindValue: #DebuggerSend to: #F7.
       
   172 
       
   173     "Created: / 04-02-2017 / 22:46:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   174     "Modified: / 14-03-2017 / 16:40:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   175 !
       
   176 
   153 reinitialize
   177 reinitialize
   154     "reinitialize after an image-restart"
   178     "reinitialize after an image-restart"
   155 
   179 
   156     self newDebugger
   180     self newDebugger
       
   181 ! !
       
   182 
       
   183 !DebugView class methodsFor:'accessing'!
       
   184 
       
   185 defaultKeyboardMap
       
   186     defaultKeyboardMap isNil ifTrue:[
       
   187         self initializeDefaultKeyboardMap.
       
   188     ].
       
   189     ^ defaultKeyboardMap
       
   190 
       
   191     "Created: / 04-02-2017 / 22:46:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   157 ! !
   192 ! !
   158 
   193 
   159 !DebugView class methodsFor:'cleanup'!
   194 !DebugView class methodsFor:'cleanup'!
   160 
   195 
   161 lowSpaceCleanup
   196 lowSpaceCleanup
  1343      (Menu new fromLiteralArrayEncoding:(DebugView processMenuSpec)) startUp
  1378      (Menu new fromLiteralArrayEncoding:(DebugView processMenuSpec)) startUp
  1344     "
  1379     "
  1345 
  1380 
  1346     <resource: #menu>
  1381     <resource: #menu>
  1347 
  1382 
  1348     ^
  1383     ^ 
  1349      #(Menu
  1384      #(Menu
  1350         (
  1385         (
  1351          (MenuItem
  1386          (MenuItem
  1352             label: 'Continue'
  1387             label: 'Continue'
  1353             itemValue: doContinue
  1388             itemValue: doContinue
       
  1389             nameKey: Continue
       
  1390             shortcutKey: DebuggerContinue
  1354           )
  1391           )
  1355          (MenuItem
  1392          (MenuItem
  1356             label: 'Next (Line-Step)'
  1393             label: 'Next (Line-Step)'
  1357             itemValue: doNext
  1394             itemValue: doNext
       
  1395             shortcutKey: DebuggerNext
  1358           )
  1396           )
  1359          (MenuItem
  1397          (MenuItem
  1360             label: 'Step'
  1398             label: 'Step'
  1361             itemValue: doStep
  1399             itemValue: doStep
       
  1400             shortcutKey: DebuggerStep
       
  1401           )
       
  1402          (MenuItem
       
  1403             label: 'Send'
       
  1404             itemValue: doSend
       
  1405             shortcutKey: DebuggerSend
  1362           )
  1406           )
  1363          (MenuItem
  1407          (MenuItem
  1364             label: '-'
  1408             label: '-'
  1365           )
  1409           )
  1366          (MenuItem
  1410          (MenuItem
  1367             label: 'After 5 Seconds'
  1411             label: 'After 5 Seconds'
  1368             submenu:
  1412             submenu: 
  1369            (Menu
  1413            (Menu
  1370               (
  1414               (
  1371                (MenuItem
  1415                (MenuItem
  1372                   label: 'Continue'
  1416                   label: 'Continue'
  1373                   itemValue: doContinueAfterDelay
  1417                   itemValue: doContinueAfterDelay
  1962     ^ contextInspector
  2006     ^ contextInspector
  1963 !
  2007 !
  1964 
  2008 
  1965 inspectedProcess
  2009 inspectedProcess
  1966     ^ inspectedProcess
  2010     ^ inspectedProcess
       
  2011 !
       
  2012 
       
  2013 keyboardMap
       
  2014     keyboardMap isNil ifTrue:[ 
       
  2015         self initializeKeyboardMap.
       
  2016     ].
       
  2017     ^keyboardMap
       
  2018 
       
  2019     "
       
  2020     WorkspaceApplication new open; yourself
       
  2021     "
       
  2022 
       
  2023     "Created: / 02-02-2017 / 00:16:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2024     "Modified: / 04-02-2017 / 00:25:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2025 ! !
       
  2026 
       
  2027 !DebugView methodsFor:'accessing-keyboard mappings'!
       
  2028 
       
  2029 shortKeyStringForAction: aSymbol
       
  2030     | shortcut |
       
  2031 
       
  2032     shortcut := self shortKeyStringFor: aSymbol.
       
  2033     ^ shortcut isNil 
       
  2034         ifTrue:[ '' ]
       
  2035         ifFalse:[ '  -  ' , shortcut].
       
  2036 
       
  2037     "Created: / 11-05-2017 / 21:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1967 ! !
  2038 ! !
  1968 
  2039 
  1969 !DebugView methodsFor:'aspects'!
  2040 !DebugView methodsFor:'aspects'!
  1970 
  2041 
  1971 verboseBacktraceHolder
  2042 verboseBacktraceHolder
  3034     ].
  3105     ].
  3035     ^ nil
  3106     ^ nil
  3036 
  3107 
  3037     "Modified: 29.8.1995 / 23:38:54 / claus"
  3108     "Modified: 29.8.1995 / 23:38:54 / claus"
  3038     "Modified: 4.3.1997 / 01:54:03 / cg"
  3109     "Modified: 4.3.1997 / 01:54:03 / cg"
       
  3110 ! !
       
  3111 
       
  3112 !DebugView methodsFor:'initialization'!
       
  3113 
       
  3114 initializeKeyboardMap
       
  3115     keyboardMap := self class defaultKeyboardMap copy.
       
  3116     device notNil ifTrue:[
       
  3117         keyboardMap parent: device keyboardMap.
       
  3118     ].
       
  3119 
       
  3120     "Created: / 02-02-2017 / 23:47:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  3121     "Modified: / 04-02-2017 / 22:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  3039 ! !
  3122 ! !
  3040 
  3123 
  3041 !DebugView methodsFor:'initialization & release'!
  3124 !DebugView methodsFor:'initialization & release'!
  3042 
  3125 
  3043 addToCurrentProject
  3126 addToCurrentProject
  3540     contextView middleButtonMenu:(self middleButtonMenu).
  3623     contextView middleButtonMenu:(self middleButtonMenu).
  3541 !
  3624 !
  3542 
  3625 
  3543 initializeContinueButtonIn:bpanel
  3626 initializeContinueButtonIn:bpanel
  3544     continueButton := Button
  3627     continueButton := Button
  3545                 label:(resources string:'Continue')
  3628                 label:(resources string:'Continue') , (self shortKeyStringForAction: #DebuggerContinue)    
  3546                 action:[
  3629                 action:[
  3547                     continueButton turnOffWithoutRedraw.
  3630                     continueButton turnOffWithoutRedraw.
  3548                     self doContinue
  3631                     self doContinue
  3549                 ]
  3632                 ]
  3550                 in:bpanel.
  3633                 in:bpanel.
  3551 
  3634 
  3552     continueButton name:'continueButton'.
  3635     continueButton name:'continueButton'.
  3553 
  3636 
  3554     "Created: / 17.11.2001 / 20:57:34 / cg"
  3637     "Created: / 17-11-2001 / 20:57:34 / cg"
       
  3638     "Modified: / 17-05-2017 / 16:08:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  3555 !
  3639 !
  3556 
  3640 
  3557 initializeDefineButtonIn:bpanel
  3641 initializeDefineButtonIn:bpanel
  3558     defineButton := Button
  3642     defineButton := Button
  3559                 label:(resources string:'Define')
  3643                 label:(resources string:'Define')
  3623     ^ hpanel
  3707     ^ hpanel
  3624 !
  3708 !
  3625 
  3709 
  3626 initializeNextButtonIn:bpanel
  3710 initializeNextButtonIn:bpanel
  3627     nextButton := Button
  3711     nextButton := Button
  3628                 label:(resources string:'Debug_Next')
  3712                 label:(resources string:'Debug_Next') , (self shortKeyStringForAction: #DebuggerNext)
  3629                 action:[
  3713                 action:[
  3630                     stepButton turnOff.
  3714                     stepButton turnOff.
  3631                     self doNext
  3715                     self doNext
  3632                 ]
  3716                 ]
  3633                 in:bpanel.
  3717                 in:bpanel.
  3634 
  3718 
  3635     nextButton name:'nextButton'.
  3719     nextButton name:'nextButton'.
  3636     
  3720 
  3637     "Created: / 17.11.2001 / 20:59:38 / cg" 
  3721     "Created: / 17-11-2001 / 20:59:38 / cg"
       
  3722     "Modified: / 11-05-2017 / 21:05:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  3638 !
  3723 !
  3639 
  3724 
  3640 initializeReportButtonIn:bpanel
  3725 initializeReportButtonIn:bpanel
  3641     reportButton := Button
  3726     reportButton := Button
  3642                 label:(resources string:'Report by Mail...')
  3727                 label:(resources string:'Report by Mail...')
  3694     "Created: / 17.11.2001 / 20:58:22 / cg"
  3779     "Created: / 17.11.2001 / 20:58:22 / cg"
  3695 !
  3780 !
  3696 
  3781 
  3697 initializeSendButtonIn:bpanel
  3782 initializeSendButtonIn:bpanel
  3698     sendButton := Button
  3783     sendButton := Button
  3699                 label:(resources string:'Send')
  3784                 label:(resources string:'Send') , (self shortKeyStringForAction: #DebuggerSend)
  3700                 action:[
  3785                 action:[
  3701                     sendButton turnOff.
  3786                     sendButton turnOff.
  3702                     self doSend
  3787                     self doSend
  3703                 ]
  3788                 ]
  3704                 in:bpanel.
  3789                 in:bpanel.
  3705 
  3790 
  3706     sendButton name:'sendButton'.
  3791     sendButton name:'sendButton'.
  3707 
  3792 
  3708     "Created: / 17.11.2001 / 21:01:20 / cg"
  3793     "Created: / 17-11-2001 / 21:01:20 / cg"
       
  3794     "Modified: / 11-05-2017 / 21:05:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  3709 !
  3795 !
  3710 
  3796 
  3711 initializeStepButtonIn:bpanel
  3797 initializeStepButtonIn:bpanel
  3712     stepButton := Button
  3798     stepButton := Button
  3713                 label:(resources string:'Debug_Step')
  3799                 label:(resources string:'Debug_Step')
  9565 
  9651 
  9566 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'printing'!
  9652 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'printing'!
  9567 
  9653 
  9568 printConditionOn:aStream
  9654 printConditionOn:aStream
  9569     ignoredSendingClassAndSelectors notEmptyOrNil ifTrue:[
  9655     ignoredSendingClassAndSelectors notEmptyOrNil ifTrue:[
  9570         aStream nextPutAll:(' if called from %1 » %2'
  9656         aStream nextPutAll:(' if called from %1 » %2'
  9571                                 bindWith:ignoredSendingClassAndSelectors first first
  9657                                 bindWith:ignoredSendingClassAndSelectors first first
  9572                                 with:ignoredSendingClassAndSelectors first second).
  9658                                 with:ignoredSendingClassAndSelectors first second).
  9573         ^ self.
  9659         ^ self.
  9574     ].
  9660     ].
  9575     ignoredProcesses notEmptyOrNil ifTrue:[
  9661     ignoredProcesses notEmptyOrNil ifTrue:[