--- a/GDBFrame.st Thu Feb 15 08:46:03 2018 +0000
+++ b/GDBFrame.st Sat Feb 03 22:37:17 2018 +0000
@@ -107,19 +107,32 @@
variables
self ensureIsValid.
variables isNil ifTrue:[
- variables := GDBTransientDataHolder debugger: debugger factory:[
- | result |
+ variables := GDBTransientDataHolder debugger: debugger factory:[ :old |
+ | result new |
+
+ result := debugger send: (GDBMI_stack_list_variables new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: '--no-values')).
+ new := (result propertyAt: #variables) ? #().
+ old notNil ifTrue:[
+ self assert: old size == new size. "/ for now...
+ 1 to: new size do:[:i |
+ | oldVar newVar |
- result := debugger send: (GDBMI_stack_list_variables new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: '--simple-values')).
- (result propertyAt: #variables) ? #()
- do:[ :each | each setFrame: self ];
- yourself
+ oldVar := old at: i.
+ newVar := new at: i.
+ newVar name = oldVar name ifTrue:[
+ new at: i put: (old at: i)
+ ].
+ ].
+ ] ifFalse:[
+ new do:[:newVar | newVar setFrame: self ]
+ ].
+ new
].
].
^ variables value
"Created: / 27-02-2015 / 14:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 17-11-2017 / 20:22:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 01-02-2018 / 22:02:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!GDBFrame methodsFor:'initialization'!
@@ -134,6 +147,7 @@
level := anInteger
"Created: / 15-02-2018 / 08:34:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 02-02-2018 / 12:16:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
setLine: anInteger