GDBVariable.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 05 Jul 2018 13:30:40 +0100
changeset 127 1254cc005f57
parent 109 f57ce907abf4
child 137 a98a4a226c26
permissions -rw-r--r--
Added support for 'synthetic' frame variables ...i.e., frame variables for which there's no symbol and thus for which no variable object can be created (yet). Therefore we should fetch value and type. To make it simpler, also make `GDBVariable` somewhat polymorph with `GDBVariableObject` so we can use it in frame view (in VDB).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     4
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     5
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     7
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     8
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     9
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    10
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    13
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    14
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    16
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    18
"
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs' }"
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ NameSpace: Smalltalk }"
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    23
GDBDebuggerObject subclass:#GDBVariable
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    24
	instanceVariableNames:'frame name value type arg varobj'
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    25
	classVariableNames:'VarobjUnavailable'
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'GDB-Core'
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    30
!GDBVariable class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    31
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    32
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    33
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    34
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    35
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    36
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    37
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    38
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    39
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    40
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    41
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    42
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    43
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    44
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    45
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    46
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    47
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    48
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    49
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    50
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    51
! !
76
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
    52
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    53
!GDBVariable class methodsFor:'initialization'!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    54
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    55
initialize
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    56
    "Invoked at system start or when the class is dynamically loaded."
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    57
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    58
    VarobjUnavailable := Object new.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    59
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    60
    "Modified (comment): / 05-07-2018 / 11:05:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    61
! !
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    62
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!GDBVariable class methodsFor:'accessing - GDB value descriptors'!
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
description
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    ^ (super description)
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
        define:#name as:String;
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    68
        define:#arg as:Boolean;       
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
        yourself
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    "Created: / 16-09-2014 / 23:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    72
    "Modified: / 05-07-2018 / 11:07:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
! !
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!GDBVariable methodsFor:'accessing'!
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    77
children
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    78
    | vobj |
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    79
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    80
    vobj := self varobj.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    81
    ^ vobj notNil ifTrue:[ vobj children ] ifFalse: [ #() ].
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    82
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    83
    "Created: / 05-07-2018 / 11:59:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    84
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    85
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    86
expression
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    87
    ^ self name
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    88
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    89
    "Created: / 05-07-2018 / 11:58:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    90
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    91
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
name
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    ^ name
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
    94
!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
    95
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    96
path
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    97
    ^ self expression
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    98
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
    99
    "Created: / 05-07-2018 / 11:58:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   100
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   101
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   102
type
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   103
    ^ type
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   104
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   105
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   106
value
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   107
    | vobj |
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   108
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   109
    vobj := self varobj.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   110
    ^ vobj notNil ifTrue:[ vobj value ] ifFalse: [ value ].
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   111
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   112
    "Created: / 27-02-2015 / 23:37:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   113
    "Modified: / 05-07-2018 / 12:02:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   114
! !
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   115
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   116
!GDBVariable methodsFor:'accessing-private'!
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   117
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   118
varobj
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   119
    varobj isNil ifTrue:[ 
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   120
        varobj := [ debugger evaluate: name in: frame ] on: GDBCommandFailedError do: [ VarobjUnavailable ].
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   121
    ].
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   122
    varobj == VarobjUnavailable ifTrue:[ ^ nil ].
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   123
    ^ varobj
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   124
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   125
    "Created: / 27-02-2015 / 17:18:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   126
    "Modified: / 15-01-2018 / 23:10:31 / jv"
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   127
    "Modified: / 05-07-2018 / 11:06:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   128
! !
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   129
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   130
!GDBVariable methodsFor:'initialization'!
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   131
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   132
setFrame: aGDBFrame
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   133
    self assert: frame isNil.
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   134
    self assert: (debugger isNil or:[ debugger == aGDBFrame debugger ]).
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   135
    frame := aGDBFrame.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   136
    self setDebugger: frame debugger.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   137
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   138
    "Created: / 27-02-2015 / 17:08:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   139
    "Modified: / 04-02-2018 / 21:41:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   140
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   141
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   142
setValue: aString
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   143
    value := aString
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   144
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   145
    "Created: / 01-02-2018 / 21:34:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
! !
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   148
!GDBVariable methodsFor:'inspecting'!
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   149
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   150
inspectorExtraAttributes
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   151
    ^ super inspectorExtraAttributes
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   152
        add:('-varobj' -> [ self varobj ]);
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   153
        yourself
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   154
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   155
    "Created: / 13-06-2017 / 14:51:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   156
! !
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   157
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
!GDBVariable methodsFor:'printing & storing'!
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
printOn:aStream
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
    "append a printed representation if the receiver to the argument, aStream"
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    super printOn:aStream.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
    aStream nextPutAll:'('.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
    name printOn: aStream.
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   166
    aStream nextPutAll:': '.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   167
    aStream nextPutAll: self valueString.
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
    aStream nextPutAll:')'.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   170
    "Modified: / 13-06-2017 / 17:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   171
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   172
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   173
valueString
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   174
    "Return value as string to be presented to user. The difference
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   175
     to sending `value displayString` is that #valueString returns a
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   176
     pretty-printed value (if pretty printing was enabled for GDB)
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   177
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   178
     @see GDBMI_enable_pretty_printing
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   179
     @see GDBDebugger >> enablePrettyPrinting
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   180
    "
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   181
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   182
    ^ value notNil ifTrue:[ value ] ifFalse:[ self value displayString ]
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   183
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   184
    "Created: / 11-06-2017 / 23:24:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 76
diff changeset
   185
    "Modified (comment): / 12-06-2017 / 09:26:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
! !
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   188
!GDBVariable methodsFor:'testing'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   189
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   190
hasChanged
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   191
    | vobj |
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   192
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   193
    vobj := self varobj.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   194
    ^ vobj notNil ifTrue:[ vobj hasChanged ] ifFalse: [ false ].
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   195
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   196
    "Created: / 05-07-2018 / 11:59:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   197
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   198
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   199
hasChildren
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   200
    | vobj |
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   201
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   202
    vobj := self varobj.
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   203
    ^ vobj notNil ifTrue:[ vobj hasChildren ] ifFalse: [ false ].
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   204
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   205
    "Created: / 05-07-2018 / 12:00:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   206
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   207
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   208
isArgument
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   209
    ^ arg == true
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   210
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   211
    "Created: / 05-07-2018 / 11:08:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   212
!
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   213
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   214
isValid
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   215
    ^ frame isValid
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   216
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   217
    "Created: / 04-02-2018 / 21:32:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   218
! !
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   219
76
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   220
!GDBVariable class methodsFor:'documentation'!
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   221
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   222
version_HG
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   223
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   224
    ^ '$Changeset: <not expanded> $'
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   225
! !
29efc28d989a Fixed `GDBVariable>>varobj` to actually keep the varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   226
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   227
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   228
GDBVariable initialize!