Generalize `VDBInstructionListView`
...so it can show any object that responds to `#disassemble`.
In addition, a frame(Holder) can be set to highlight current PC
like before.
--- a/Make.proto Sun Jun 09 11:19:45 2019 +0100
+++ b/Make.proto Mon Jun 10 14:36:46 2019 +0100
@@ -171,12 +171,12 @@
$(OUTDIR)VDBSimpleDebuggerConsoleApplication.$(O) VDBSimpleDebuggerConsoleApplication.$(C) VDBSimpleDebuggerConsoleApplication.$(H): VDBSimpleDebuggerConsoleApplication.st $(INCLUDE_TOP)/jv/libgdbs/GDBCommandStatus.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBTabbingContainer.$(O) VDBTabbingContainer.$(C) VDBTabbingContainer.$(H): VDBTabbingContainer.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBAbstractTreeApplication.$(O) VDBAbstractTreeApplication.$(C) VDBAbstractTreeApplication.$(H): VDBAbstractTreeApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
-$(OUTDIR)VDBBreakpointListApplication.$(O) VDBBreakpointListApplication.$(C) VDBBreakpointListApplication.$(H): VDBBreakpointListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBFrameApplication.$(O) VDBFrameApplication.$(C) VDBFrameApplication.$(H): VDBFrameApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContainer.$(H) $(INCLUDE_TOP)/jv/vdb/VDBTabbingContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBSourceAndDisassemblyApplication.$(O) VDBSourceAndDisassemblyApplication.$(C) VDBSourceAndDisassemblyApplication.$(H): VDBSourceAndDisassemblyApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContainer.$(H) $(INCLUDE_TOP)/jv/vdb/VDBTabbingContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBUnixDebuggerConsoleApplication.$(O) VDBUnixDebuggerConsoleApplication.$(C) VDBUnixDebuggerConsoleApplication.$(H): VDBUnixDebuggerConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) VDBUnixInferiorConsoleApplication.$(C) VDBUnixInferiorConsoleApplication.$(H): VDBUnixInferiorConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBUnixReplayServerConsoleApplication.$(O) VDBUnixReplayServerConsoleApplication.$(C) VDBUnixReplayServerConsoleApplication.$(H): VDBUnixReplayServerConsoleApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
+$(OUTDIR)VDBBreakpointListApplication.$(O) VDBBreakpointListApplication.$(C) VDBBreakpointListApplication.$(H): VDBBreakpointListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBInstructionListApplication.$(O) VDBInstructionListApplication.$(C) VDBInstructionListApplication.$(H): VDBInstructionListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBRegisterListApplication.$(O) VDBRegisterListApplication.$(C) VDBRegisterListApplication.$(H): VDBRegisterListApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
$(OUTDIR)VDBStackApplication.$(O) VDBStackApplication.$(C) VDBStackApplication.$(H): VDBStackApplication.st $(INCLUDE_TOP)/jv/vdb/VDBAbstractApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractListApplication.$(H) $(INCLUDE_TOP)/jv/vdb/VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
--- a/Make.spec Sun Jun 09 11:19:45 2019 +0100
+++ b/Make.spec Mon Jun 10 14:36:46 2019 +0100
@@ -88,12 +88,12 @@
VDBSimpleDebuggerConsoleApplication \
VDBTabbingContainer \
VDBAbstractTreeApplication \
- VDBBreakpointListApplication \
VDBFrameApplication \
VDBSourceAndDisassemblyApplication \
VDBUnixDebuggerConsoleApplication \
VDBUnixInferiorConsoleApplication \
VDBUnixReplayServerConsoleApplication \
+ VDBBreakpointListApplication \
VDBInstructionListApplication \
VDBRegisterListApplication \
VDBStackApplication \
@@ -140,12 +140,12 @@
$(OUTDIR)VDBSimpleDebuggerConsoleApplication.$(O) \
$(OUTDIR)VDBTabbingContainer.$(O) \
$(OUTDIR)VDBAbstractTreeApplication.$(O) \
- $(OUTDIR)VDBBreakpointListApplication.$(O) \
$(OUTDIR)VDBFrameApplication.$(O) \
$(OUTDIR)VDBSourceAndDisassemblyApplication.$(O) \
$(OUTDIR)VDBUnixDebuggerConsoleApplication.$(O) \
$(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) \
$(OUTDIR)VDBUnixReplayServerConsoleApplication.$(O) \
+ $(OUTDIR)VDBBreakpointListApplication.$(O) \
$(OUTDIR)VDBInstructionListApplication.$(O) \
$(OUTDIR)VDBRegisterListApplication.$(O) \
$(OUTDIR)VDBStackApplication.$(O) \
--- a/VDBAbstractApplication.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBAbstractApplication.st Mon Jun 10 14:36:46 2019 +0100
@@ -487,8 +487,10 @@
in:window topView id
].
window openInGroup: self window windowGroup.
+ window raise.
"Created: / 14-03-2018 / 09:47:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 14:16:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
doPinMenuAs: label item: tearOffMenuItem
--- a/VDBDebuggerApplication.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBDebuggerApplication.st Mon Jun 10 14:36:46 2019 +0100
@@ -1493,10 +1493,12 @@
application := VDBInstructionListApplication new
debuggerHolder: self debuggerHolder;
- frameHolder: self selectedFrameHolder.
+ disassemblableHolder: self selectedFrameHolder;
+ frameHolder: self selectedFrameHolder;
+ yourself.
self doOpenToolApplication: application.
- "Modified: / 02-10-2018 / 10:15:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 12:47:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
doOpenToolRegisters
@@ -1801,6 +1803,7 @@
"Modified: / 01-06-2017 / 23:16:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+
!VDBDebuggerApplication methodsFor:'startup & release'!
closeRequestFor:aTopView
--- a/VDBFramePresenter.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBFramePresenter.st Mon Jun 10 14:36:46 2019 +0100
@@ -117,10 +117,11 @@
VDBInstructionListApplication new
title: (self class classResources string: '%1 (disassembly)' with: frame func ? '?');
debugger: frame debugger;
+ disassemblable: frame;
frame: frame;
open.
- "Modified: / 02-10-2018 / 10:14:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 14:04:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBFramePresenter methodsFor:'menu-queries'!
--- a/VDBInstructionListApplication.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBInstructionListApplication.st Mon Jun 10 14:36:46 2019 +0100
@@ -13,7 +13,7 @@
VDBAbstractTreeApplication subclass:#VDBInstructionListApplication
instanceVariableNames:'instructionListHolder instructionBasicBlocks
selectedInstructionHolder selectedInstructionBranchTargetAddress
- selectedInstructionBasicBlock frameHolder
+ selectedInstructionBasicBlock disassemblableHolder frameHolder
canExecStepOverInstructionHolder canExecStepIntoInstructionHolder
canExecBackOverInstructionHolder canExecBackIntoInstructionHolder'
classVariableNames:''
@@ -203,16 +203,28 @@
!VDBInstructionListApplication methodsFor:'accessing'!
+disassemblable
+ ^ self disassemblableHolder value
+
+ "Created: / 10-06-2019 / 10:06:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+disassemblable: anObject
+ self disassemblableHolder value: anObject
+
+ "Created: / 10-06-2019 / 10:06:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
frame
^ self frameHolder value
- "Created: / 06-08-2018 / 13:24:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 10-06-2019 / 12:44:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
frame: aGDBFrame
- self frameHolder value: aGDBFrame
+ ^ self frameHolder value: aGDBFrame
- "Created: / 06-08-2018 / 13:22:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 10-06-2019 / 12:44:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
instructionList
@@ -230,8 +242,8 @@
!VDBInstructionListApplication methodsFor:'aspects'!
backgroundColorFor: aVDBPresenter
- (frameHolder value notNil and:[aVDBPresenter isInstructionPresenter]) ifTrue:[
- frameHolder value address == aVDBPresenter address ifTrue:[
+ (self frame notNil and:[aVDBPresenter isInstructionPresenter]) ifTrue:[
+ disassemblableHolder value address == aVDBPresenter address ifTrue:[
^ Color green.
].
].
@@ -259,7 +271,38 @@
^ nil
"Created: / 26-06-2018 / 11:26:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-08-2018 / 11:50:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 14:52:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+disassemblableHolder
+ disassemblableHolder isNil ifTrue:[
+ disassemblableHolder := ValueHolder new.
+ disassemblableHolder addDependent:self.
+ ].
+ ^ disassemblableHolder
+
+ "Created: / 10-06-2019 / 10:03:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+disassemblableHolder:something
+ "set the 'frameHolder' value holder (automatically generated)"
+
+ |oldValue newValue|
+
+ disassemblableHolder notNil ifTrue:[
+ oldValue := disassemblableHolder value.
+ disassemblableHolder removeDependent:self.
+ ].
+ disassemblableHolder := something.
+ disassemblableHolder notNil ifTrue:[
+ disassemblableHolder addDependent:self.
+ ].
+ newValue := disassemblableHolder value.
+ oldValue ~~ newValue ifTrue:[
+ self update:#value with:newValue from:disassemblableHolder.
+ ].
+
+ "Created: / 10-06-2019 / 10:03:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
foregroundColorFor: aVDBAbstractPresenter
@@ -380,8 +423,12 @@
self enqueueDelayedUpdateInternalList.
^ self.
].
+ sender == disassemblableHolder ifTrue:[
+ self enqueueDelayedUpdateContents.
+ ^ self.
+ ].
sender == frameHolder ifTrue:[
- self enqueueDelayedUpdateContents.
+ self enqueueDelayedInvalidateInternalList.
^ self.
].
sender == selectedInstructionHolder ifTrue:[
@@ -390,7 +437,7 @@
super update:aspect with:param from:sender
"Modified: / 23-01-2019 / 16:37:11 / jv"
- "Modified: / 14-02-2019 / 16:52:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 12:43:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
updateAfterSelectedInstructionChanged
@@ -421,23 +468,10 @@
!
updateButtonEnablements
- | frame thread threadIsStopped canReverse |
-
- frame := self frameHolder value.
- frame notNil ifTrue:[
- thread := frame thread.
- ].
- threadIsStopped := thread notNil and:[ thread isStopped ].
- canReverse := debugger notNil and:[ debugger hasFeature: 'reverse' ].
-
- self canExecStepIntoInstructionHolder value: threadIsStopped.
- self canExecStepOverInstructionHolder value: threadIsStopped.
-
- self canExecBackIntoInstructionHolder value: threadIsStopped & canReverse.
- self canExecBackOverInstructionHolder value: threadIsStopped & canReverse.
+ self enqueueDelayedUpdateButtonEnablements
"Created: / 01-09-2018 / 14:49:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 28-09-2018 / 07:04:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 10:11:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBInstructionListApplication methodsFor:'change & update-delayed'!
@@ -448,12 +482,13 @@
"/ First, force update of )cached) frames to get
"/ updated PC.
frame := self frame.
- (frame notNil and:[frame thread isStopped]) ifTrue:[
+ frame notNil ifTrue:[
frame thread stack
].
super delayedInvalidateInternalList
"Created: / 03-10-2018 / 12:10:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 12:45:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
delayedUpdateBasicBlocks
@@ -469,11 +504,11 @@
!
delayedUpdateButtonEnablements
- | frame thread threadIsStopped canReverse |
+ | disassemblable thread threadIsStopped canReverse |
- frame := self frameHolder value.
- frame notNil ifTrue:[
- thread := frame thread.
+ disassemblable := self disassemblable.
+ (disassemblable notNil and:[disassemblable respondsTo: #thread]) ifTrue:[
+ thread := disassemblable thread.
].
threadIsStopped := thread notNil and:[ thread isStopped ].
canReverse := debugger notNil and:[ debugger hasFeature: 'reverse' ].
@@ -485,16 +520,17 @@
self canExecBackOverInstructionHolder value: threadIsStopped & canReverse.
"Created: / 03-10-2018 / 12:12:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 10:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
delayedUpdateContents
- | frame instructions |
+ | disassemblable instructions |
- frame := self frame.
+ disassemblable := self disassemblable.
instructions := #().
- (frame notNil and:[ frame hasSymbol ]) ifTrue:[
+ (disassemblable notNil "and:[ disassemblable hasSymbol ]") ifTrue:[
[
- instructions := frame disassemble.
+ instructions := disassemblable disassemble.
self hideMessage.
] on: GDBError do:[:ex |
self showMessage: (self resources string: (ex parameter propertyAt: #msg)).
@@ -504,7 +540,7 @@
self updateButtonEnablements.
"Created: / 01-10-2018 / 12:55:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 08-06-2019 / 16:29:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 10:50:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
delayedUpdateInternalList
@@ -534,7 +570,7 @@
self enqueueDelayedUpdateBasicBlocks.
"Created: / 27-02-2015 / 15:47:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 16-08-2018 / 16:13:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 12:45:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
delayedUpdateSelection
@@ -790,7 +826,7 @@
scrollToAddress: address
internalListView isNil ifTrue:[ ^ self ].
- (self frame notNil and:[ self instructionList notEmptyOrNil ]) ifTrue:[
+ (self disassemblable notNil and:[ self instructionList notEmptyOrNil ]) ifTrue:[
self instructionPresentersDo:[ :each |
each address = address ifTrue:[
self scrollToListItem: each.
@@ -799,6 +835,7 @@
].
"Created: / 07-08-2018 / 13:36:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 10:16:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBInstructionListApplication class methodsFor:'documentation'!
--- a/VDBSourceAndDisassemblyApplication.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBSourceAndDisassemblyApplication.st Mon Jun 10 14:36:46 2019 +0100
@@ -52,7 +52,12 @@
frameHolder removeDependent:self.
].
frameHolder := aValueModel.
- components do:[:each | each application perform: #frameHolder: with: frameHolder ].
+ components do:[:each |
+ each application perform: #frameHolder: with: frameHolder .
+ MessageNotUnderstood ignoreIn:[
+ each application perform: #disassemblableHolder: with: frameHolder
+ ]
+ ].
frameHolder notNil ifTrue:[
frameHolder addDependent:self.
].
@@ -61,7 +66,7 @@
self update:#value with:newValue from:frameHolder.
].
- "Modified: / 01-10-2018 / 13:09:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 22:37:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBSourceAndDisassemblyApplication methodsFor:'initialization'!
@@ -74,9 +79,19 @@
yourself).
self addApplication: (VDBInstructionListApplication new
debuggerHolder: self debuggerHolder;
- frameHolder: self frameHolder;
+ disassemblableHolder: self frameHolder;
+ frameHolder: self frameHolder;
yourself)
"Created: / 01-10-2018 / 12:45:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 10-06-2019 / 12:46:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 10-06-2019 / 22:31:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!VDBSourceAndDisassemblyApplication class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/VDBStackApplication.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBStackApplication.st Mon Jun 10 14:36:46 2019 +0100
@@ -235,7 +235,7 @@
"/ again, so care for this.
contentsValid ifFalse:[
- self enqueueUpdateAfterThreadStopped: thread.
+ self enqueueDelayedUpdateContents.
^ self
].
@@ -254,7 +254,7 @@
"Created: / 22-09-2014 / 23:21:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 16-01-2018 / 20:22:04 / jv"
- "Modified: / 14-02-2019 / 16:53:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 08-06-2019 / 07:35:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
delayedUpdateInternalList
--- a/VDBUnixReplayServerConsoleApplication.st Sun Jun 09 11:19:45 2019 +0100
+++ b/VDBUnixReplayServerConsoleApplication.st Mon Jun 10 14:36:46 2019 +0100
@@ -228,3 +228,10 @@
"Created: / 27-07-2018 / 07:49:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!VDBUnixReplayServerConsoleApplication class methodsFor:'documentation'!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
+! !
+
--- a/bc.mak Sun Jun 09 11:19:45 2019 +0100
+++ b/bc.mak Mon Jun 10 14:36:46 2019 +0100
@@ -118,12 +118,12 @@
$(OUTDIR)VDBSimpleDebuggerConsoleApplication.$(O) VDBSimpleDebuggerConsoleApplication.$(C) VDBSimpleDebuggerConsoleApplication.$(H): VDBSimpleDebuggerConsoleApplication.st $(INCLUDE_TOP)\jv\libgdbs\GDBCommandStatus.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBTabbingContainer.$(O) VDBTabbingContainer.$(C) VDBTabbingContainer.$(H): VDBTabbingContainer.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBAbstractTreeApplication.$(O) VDBAbstractTreeApplication.$(C) VDBAbstractTreeApplication.$(H): VDBAbstractTreeApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
-$(OUTDIR)VDBBreakpointListApplication.$(O) VDBBreakpointListApplication.$(C) VDBBreakpointListApplication.$(H): VDBBreakpointListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBFrameApplication.$(O) VDBFrameApplication.$(C) VDBFrameApplication.$(H): VDBFrameApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContainer.$(H) $(INCLUDE_TOP)\jv\vdb\VDBTabbingContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBSourceAndDisassemblyApplication.$(O) VDBSourceAndDisassemblyApplication.$(C) VDBSourceAndDisassemblyApplication.$(H): VDBSourceAndDisassemblyApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContainer.$(H) $(INCLUDE_TOP)\jv\vdb\VDBTabbingContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBUnixDebuggerConsoleApplication.$(O) VDBUnixDebuggerConsoleApplication.$(C) VDBUnixDebuggerConsoleApplication.$(H): VDBUnixDebuggerConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBUnixInferiorConsoleApplication.$(O) VDBUnixInferiorConsoleApplication.$(C) VDBUnixInferiorConsoleApplication.$(H): VDBUnixInferiorConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBUnixReplayServerConsoleApplication.$(O) VDBUnixReplayServerConsoleApplication.$(C) VDBUnixReplayServerConsoleApplication.$(H): VDBUnixReplayServerConsoleApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractConsoleApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractUnixConsoleApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
+$(OUTDIR)VDBBreakpointListApplication.$(O) VDBBreakpointListApplication.$(C) VDBBreakpointListApplication.$(H): VDBBreakpointListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBInstructionListApplication.$(O) VDBInstructionListApplication.$(C) VDBInstructionListApplication.$(H): VDBInstructionListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBRegisterListApplication.$(O) VDBRegisterListApplication.$(C) VDBRegisterListApplication.$(H): VDBRegisterListApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
$(OUTDIR)VDBStackApplication.$(O) VDBStackApplication.$(C) VDBStackApplication.$(H): VDBStackApplication.st $(INCLUDE_TOP)\jv\vdb\VDBAbstractApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractContentsApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractListApplication.$(H) $(INCLUDE_TOP)\jv\vdb\VDBAbstractTreeApplication.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
--- a/libInit.cc Sun Jun 09 11:19:45 2019 +0100
+++ b/libInit.cc Mon Jun 10 14:36:46 2019 +0100
@@ -53,12 +53,12 @@
extern void _VDBSimpleDebuggerConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBTabbingContainer_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBAbstractTreeApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
-extern void _VDBBreakpointListApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBFrameApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBSourceAndDisassemblyApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBUnixDebuggerConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBUnixInferiorConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBUnixReplayServerConsoleApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _VDBBreakpointListApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBInstructionListApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBRegisterListApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
extern void _VDBStackApplication_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -114,12 +114,12 @@
_VDBSimpleDebuggerConsoleApplication_Init(pass,__pRT__,snd);
_VDBTabbingContainer_Init(pass,__pRT__,snd);
_VDBAbstractTreeApplication_Init(pass,__pRT__,snd);
- _VDBBreakpointListApplication_Init(pass,__pRT__,snd);
_VDBFrameApplication_Init(pass,__pRT__,snd);
_VDBSourceAndDisassemblyApplication_Init(pass,__pRT__,snd);
_VDBUnixDebuggerConsoleApplication_Init(pass,__pRT__,snd);
_VDBUnixInferiorConsoleApplication_Init(pass,__pRT__,snd);
_VDBUnixReplayServerConsoleApplication_Init(pass,__pRT__,snd);
+ _VDBBreakpointListApplication_Init(pass,__pRT__,snd);
_VDBInstructionListApplication_Init(pass,__pRT__,snd);
_VDBRegisterListApplication_Init(pass,__pRT__,snd);
_VDBStackApplication_Init(pass,__pRT__,snd);
--- a/tests/VDBAbstractApplicationTests.st Sun Jun 09 11:19:45 2019 +0100
+++ b/tests/VDBAbstractApplicationTests.st Mon Jun 10 14:36:46 2019 +0100
@@ -93,8 +93,11 @@
window notNil ifTrue:[ window waitUntilEventsProcessed ].
debugger waitUntilAlCommandsProcessed.
window notNil ifTrue:[ window waitUntilEventsProcessed ].
+ Delay waitForMilliseconds: 200.
"Created: / 23-01-2019 / 21:42:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-06-2019 / 16:21:16 / jv"
+ "Modified: / 12-06-2019 / 16:28:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBAbstractApplicationTests class methodsFor:'documentation'!
--- a/tests/VDBInstructionListApplicationTests.st Sun Jun 09 11:19:45 2019 +0100
+++ b/tests/VDBInstructionListApplicationTests.st Mon Jun 10 14:36:46 2019 +0100
@@ -41,6 +41,7 @@
frameHolder := ValueHolder new.
application := VDBInstructionListApplication new.
application debuggerHolder: (ValueHolder with: debugger).
+ application disassemblableHolder: frameHolder.
application frameHolder: frameHolder.
application open.
@@ -64,7 +65,7 @@
debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
"Created: / 03-10-2018 / 12:27:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 03-10-2018 / 15:19:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-06-2019 / 15:54:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_01b
@@ -76,6 +77,7 @@
frameHolder := ValueHolder new.
application := VDBInstructionListApplication new.
application debuggerHolder: (ValueHolder with: debugger).
+ application disassemblableHolder: frameHolder.
application frameHolder: frameHolder.
application allButOpen.
@@ -96,7 +98,7 @@
debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
"Created: / 03-10-2018 / 12:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 03-10-2018 / 15:14:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-06-2019 / 15:54:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_02
@@ -114,6 +116,7 @@
frameHolder := ValueHolder new.
application := VDBInstructionListApplication new.
application debuggerHolder: (ValueHolder with: debugger).
+ application disassemblableHolder: frameHolder.
application frameHolder: frameHolder.
application open.
application window waitUntilVisible.
@@ -152,7 +155,7 @@
"/ Hide the list and set frame, list should
"/ stay empty (i.e., not updated)
- internalListView beInvisible.
+ application window beInvisible.
frameHolder value: stack first.
self waitForUIToStabilize.
@@ -162,7 +165,7 @@
"/ Show the list, contents should get
"/ updated.
- internalListView beVisible.
+ application window beVisible.
internalListView waitUntilVisible.
self waitForUIToStabilize.
@@ -172,10 +175,11 @@
debugger send: 'd'.
debugger send: 'c' andWaitFor: GDBThreadGroupExitedEvent.
+ self waitForUIToStabilize.
"Created: / 23-01-2019 / 16:28:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 23-01-2019 / 21:55:04 / jv"
- "Modified: / 23-01-2019 / 21:55:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 12-06-2019 / 16:13:36 / jv"
+ "Modified: / 12-06-2019 / 16:15:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!VDBInstructionListApplicationTests class methodsFor:'documentation'!