GDBVariableObject.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 30 May 2022 13:58:25 +0100
changeset 259 651864c2aa29
parent 224 34a835fad1c8
child 272 cdd1c9ad00de
permissions -rw-r--r--
Relicense under MIT license.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
     1
"{ Encoding: utf8 }"
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
     2
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     3
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     4
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     5
Copyright (C) 2015-now Jan Vrany
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
     6
Copyright (C) 2020-2022 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
     7
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
     8
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
     9
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    10
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    11
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    12
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    13
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    14
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    15
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    16
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    17
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    18
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    19
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    20
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    21
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    22
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    23
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    24
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    25
"
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"{ Package: 'jv:libgdbs' }"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
"{ NameSpace: Smalltalk }"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    30
GDBDebuggerObject subclass:#GDBVariableObject
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
    31
	instanceVariableNames:'parent name exp path thread frame value type numchild has_more
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
    32
		children changed inScope visualizer dynamic'
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    33
	classVariableNames:'GdbDefaultVisualizer'
224
34a835fad1c8 Introduce new pool `GDBOutputFormats`
Jan Vrany <jan.vrany@labware.com>
parents: 210
diff changeset
    34
	poolDictionaries:'GDBOutputFormats'
102
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
    35
	category:'GDB-Core'
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
!
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    38
!GDBVariableObject class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    39
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    40
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    41
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    42
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    43
Copyright (C) 2015-now Jan Vrany
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    44
Copyright (C) 2020-2022 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    45
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    46
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    47
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    48
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    49
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    50
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    51
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    52
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    53
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    54
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    55
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    56
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    57
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    58
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    59
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    60
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    61
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 224
diff changeset
    62
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    63
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 83
diff changeset
    64
! !
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
    65
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    66
!GDBVariableObject class methodsFor:'initialization'!
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    67
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    68
initialize
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    69
    "Invoked at system start or when the class is dynamically loaded."
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    70
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    71
    GdbDefaultVisualizer := 'gdb.default_visualizer'
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    72
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    73
    "Modified: / 04-06-2018 / 15:48:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    74
! !
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
    75
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    76
!GDBVariableObject class methodsFor:'instance creation'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    77
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    78
new
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    79
    "return an initialized instance"
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    80
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    81
    ^ self basicNew initialize.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    82
! !
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
    83
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
    84
!GDBVariableObject class methodsFor:'accessing - GDB value descriptors'!
74
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
description
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ^ (super description)
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
        define:#name as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
        define:#numchild as:Integer;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
        define:#value as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
        define:#type as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
        define:#'thread-id' as:Integer;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
        define:#has_more as:Boolean;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
        define:#dynamic as:Boolean;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
        define:#displayhint as:String;
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
        yourself
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "Created: / 16-09-2014 / 23:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    "Modified: / 27-02-2015 / 17:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
! !
d53d325c2930 Initial work on varobjs. Tests locks up an image, should be polished and folded.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   102
!GDBVariableObject methodsFor:'accessing'!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   103
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   104
children
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   105
    self isValid ifFalse:[ ^ #() ].
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   106
    children isNil ifTrue:[ 
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   107
        (self isValid and:[has_more or:[ numchild isNil or:[numchild > 0]]]) ifTrue:[
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   108
            | result |
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   109
203
8b883bd72f5a Fetch only first 100 children of a varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
   110
            result := debugger send: (GDBMI_var_list_children arguments: (Array with: '--all-values' with: name with: 0 with: 100)).
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   111
            children := (result propertyAt: #children) ? #().
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   112
            children do:[:each | each setDebugger: debugger; setParent: self ].
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   113
            numchild := children size.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   114
        ] ifFalse:[ 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   115
            children := #().
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   116
        ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   117
    ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   118
    ^ children
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   119
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   120
    "Created: / 27-01-2018 / 22:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
203
8b883bd72f5a Fetch only first 100 children of a varobj
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 202
diff changeset
   121
    "Modified: / 04-10-2019 / 22:54:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   122
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   123
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   124
expression
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   125
    "Return the expression in target language to access the value (asDtring)
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   126
     The expression is relative to it's direct parent (if any),
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   127
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   128
     For example, consider
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   129
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   130
         typedef struct _point {
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   131
            int x;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   132
            int y;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   133
         } point;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   134
         ...
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   135
         point p1 = { 10, 20 };
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   136
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   137
     and consider a variable object `o` that represents `y` member of point 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   138
     `p1`. Then:
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   139
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   140
        o path '/ -> 'p1.y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   141
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   142
    while
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   143
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   144
        p expression '/ -> 'y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   145
    "
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   146
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   147
    ^ exp
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   148
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   149
    "Created: / 28-01-2018 / 21:36:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   150
    "Modified (comment): / 05-02-2018 / 21:16:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   151
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   152
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   153
frame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   154
    "If a variable object is bound to a specific thread and frame,
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   155
     returns that frame (as `GDBFrame`). Otherwise, return `nil`."
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   156
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   157
    parent notNil ifTrue:[ 
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   158
        self assert: frame isNil.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   159
        ^ parent frame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   160
    ].
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   161
    ^ frame.
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   162
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   163
    "Created: / 13-02-2018 / 21:25:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   164
    "Modified: / 15-02-2018 / 09:30:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   165
!
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   166
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   167
id
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   168
    "Returns the GDB ID (name) of the variable object. This is
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   169
    used in commands to identify a variable object instance."
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   170
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   171
    ^ name
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   172
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   173
    "Created: / 28-01-2018 / 21:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   174
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   175
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   176
index
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   177
    "Return the index of receiver within parent's children
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   178
     or `nil` if receiver is not a child varobj."
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   179
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   180
    parent isNil ifTrue:[ ^ nil ].
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   181
    ^ parent children indexOf: self.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   182
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   183
    "Created: / 04-06-2018 / 15:01:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   184
!
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   185
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   186
parent
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   187
    ^ parent
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   188
!
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   189
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   190
path
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   191
    "Return (absolute) expression in target language to access the value 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   192
     (asDtring).
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   193
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   194
     For example, consider
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   195
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   196
         typedef struct _point {
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   197
            int x;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   198
            int y;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   199
         } point;
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   200
         ...
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   201
         point p1 = { 10, 20 };
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   202
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   203
     and consider a variable object `o` that represents `y` member of point 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   204
     `p1`. Then:
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   205
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   206
        o path '/ -> 'p1.y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   207
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   208
    while
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   209
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   210
        p expression '/ -> 'y'
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   211
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   212
    "
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   213
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   214
    "/ Raise an error early when #path is requested for a child of dynamic
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   215
    "/ varobj. Thie is not supported by GDB.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   216
    "/ 
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   217
    "/ Although GDB should report an error [1], dur to a bug it report
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   218
    "/ either wrong (nonsense) value or crashes. A patch has been send
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   219
    "/ to the upstream [2], but meanwhile, check here as well in case someone
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   220
    "/ uses this with older / not yet patches version of GDB.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   221
    "/ 
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   222
    "/ [1]: https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   223
    "/ [2]: https://sourceware.org/ml/gdb-patches/2018-06/msg00058.html
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   224
    "/ 
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   225
    (parent notNil and:[parent isDynamic]) ifTrue:[ 
153
dd55019f1d86 Partability: use ANSI `#signal:` to raise an exception
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 137
diff changeset
   226
        GDBError signal: 'Invalid varobj, #path is not supported for children of a dynamic varobjs'.
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   227
        ^ self
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   228
    ].
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   229
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   230
    path isNil ifTrue:[ 
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   231
        | result |
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   232
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   233
        result := debugger send: (GDBMI_var_info_path_expression arguments: (Array with: name)).
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   234
        path := result propertyAt: #'path_expr'.
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   235
    ].
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   236
    ^ path
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   237
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   238
    "Created: / 05-02-2018 / 21:16:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
153
dd55019f1d86 Partability: use ANSI `#signal:` to raise an exception
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 137
diff changeset
   239
    "Modified: / 21-10-2018 / 08:06:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
107
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   240
!
7a315f1c9260 Variable objects: added `#path` returning an absolute expression to access the value in source langiage
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   241
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   242
thread
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   243
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   244
    If a variable object is bound to a specific thread, returns
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   245
    that thread (as GDBThread). Otherwise, `nil` is returned.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   246
    "
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   247
    | threadId |
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   248
    thread isInteger ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   249
        threadId := thread.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   250
        thread := debugger threadForId: threadId.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   251
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   252
    ^ thread
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   253
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   254
    "Created: / 04-02-2018 / 21:35:43 / 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
   255
    "Modified: / 12-02-2018 / 18:38:41 / 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
   256
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   257
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   258
type
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   259
    ^ type
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   260
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   261
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   262
value
178
71baafd9bbcb Clean up `GDBVariable(Object) >> #value` and `#valueString`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 160
diff changeset
   263
    "Retun an up-to-date pretty-printed string representation of this varobj's value."
71baafd9bbcb Clean up `GDBVariable(Object) >> #value` and `#valueString`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 160
diff changeset
   264
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   265
    changed value. "/ to force update if necessary
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   266
    self isValid ifFalse:[ ^ self class classResources string: '<invalid>' ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   267
    self inScope ifFalse:[ ^ self class classResources string: '<out-of-scope>' ].
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   268
    ^ value
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   269
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   270
    "Modified: / 12-02-2018 / 22:00:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
178
71baafd9bbcb Clean up `GDBVariable(Object) >> #value` and `#valueString`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 160
diff changeset
   271
    "Modified (comment): / 25-02-2019 / 14:36:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   272
!
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   273
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   274
valueFormatted: aGDBOutputFormat
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   275
    "Return the value formatted using given format (as String)
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   276
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   277
    Supported formats are:
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   278
        * FormatSignedDecimal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   279
        * FormatHexadecimal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   280
        * FormatOctal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   281
        * FormatPaddedHexadecimal
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   282
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   283
    To get the value in 'natural' format use plain #value 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   284
    rather than #valueFormatted:
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   285
    "
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   286
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   287
    | format result |
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   288
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   289
    aGDBOutputFormat == FormatBinary ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   290
        format := 'binary'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   291
    ] ifFalse:[aGDBOutputFormat == FormatSignedDecimal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   292
        format := 'decimal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   293
    ] ifFalse:[aGDBOutputFormat == FormatHexadecimal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   294
        format := 'hexadecimal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   295
    ] ifFalse:[aGDBOutputFormat == FormatOctal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   296
        format := 'octal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   297
    ] ifFalse:[aGDBOutputFormat == FormatPaddedHexadecimal ifTrue:[ 
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   298
        format := 'zero-hexadecimal'
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   299
    ] ifFalse:[ 
153
dd55019f1d86 Partability: use ANSI `#signal:` to raise an exception
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 137
diff changeset
   300
        GDBError signal: 'Unsupported format: ', aGDBOutputFormat displayString  
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   301
    ]]]]].
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   302
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   303
    "/ If pretty printing in MI is enabled, GDB seems to ignore the -f arguments. To work arround
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   304
    "/ this, reset the visualizer to None, print the value and then set it back to default.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   305
    "/ Pretty ugly, sigh.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   306
    ^ [
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   307
        debugger isPrettyPrintingEnabled ifTrue:[ 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   308
            debugger send: (GDBMI_var_set_visualizer arguments: (Array with: name with: 'None')) andWait: false.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   309
        ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   310
        result := debugger send: (GDBMI_var_evaluate_expression arguments: (Array with: '-f' with: format with: name)).
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   311
        result value
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   312
    ] ensure:[ 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   313
        debugger isPrettyPrintingEnabled ifTrue:[ 
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   314
            debugger send: (GDBMI_var_set_visualizer arguments: (Array with: name with: 'gdb.default_visualizer')) andWait: false.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   315
        ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   316
    ].
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   317
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   318
    "Created: / 05-02-2018 / 23:34:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
153
dd55019f1d86 Partability: use ANSI `#signal:` to raise an exception
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 137
diff changeset
   319
    "Modified: / 21-10-2018 / 08:06:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   320
!
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 110
diff changeset
   321
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   322
visualizer
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   323
    "Return the current visualizer used for the variable object.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   324
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   325
     See https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   326
    "
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   327
    debugger isPrettyPrintingEnabled ifFalse:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   328
        ^ 'None' 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   329
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   330
    visualizer isNil ifTrue:[
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   331
        ^ GdbDefaultVisualizer
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   332
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   333
    ^ visualizer
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   334
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   335
    "Created: / 13-02-2018 / 23:18:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   336
    "Modified: / 04-06-2018 / 15:48:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   337
!
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   338
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   339
visualizer: aString
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   340
    "Set a visualizer for the variable object. `aString` is the 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   341
     visualizer to use. The special value ‘None’ means to disable 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   342
     any visualizer in use.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   343
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   344
     If not ‘None’, `aString` must be a Python expression. This expression 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   345
     must evaluate to a callable object which accepts a single argument.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   346
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   347
     See https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Variable-Objects.html
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   348
    "
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   349
    |result |
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   350
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   351
    self assert: (debugger isPrettyPrintingEnabled or:[ aString = 'None' ]).
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   352
    self visualizer = aString ifTrue:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   353
        "/ Already set, no need to do anything.    
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   354
        ^ self 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   355
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   356
    result := debugger send: (GDBMI_var_set_visualizer arguments: (Array with: name with: aString)) andWait: true.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   357
    result isDone ifTrue:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   358
        visualizer := aString.
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   359
        "/ Since we have changed the visualizer, children 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   360
        "/ may have changed too. Delete them and recreate 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   361
        "/ them on demand (see #children)
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   362
        numchild := nil.
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   363
        children notNil ifTrue:[ 
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   364
            children do:[:child | child release ].
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   365
            children := nil.  
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   366
        ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   367
    ].
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   368
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   369
    "Created: / 13-02-2018 / 23:20:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   370
    "Modified: / 19-02-2018 / 15:44:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   371
! !
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   372
210
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   373
!GDBVariableObject methodsFor:'accessing-private'!
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   374
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   375
changed
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   376
    ^ changed
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   377
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   378
    "Created: / 06-08-2020 / 07:09:26 / Jan Vrany <jan.vrany@labware.com>"
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   379
! !
202
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   380
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   381
!GDBVariableObject methodsFor:'copying'!
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   382
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   383
duplicate
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   384
    "Create and returns a duplicate of the receiver, representing
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   385
     the same value. Other than that the returned duplicate is completely 
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   386
     independent"
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   387
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   388
    | dup |
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   389
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   390
    "/ For children of non-dynamic varobjs duplication is done
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   391
    "/ by evaluating its "path" (a fully rooted expression) and 
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   392
    "/ returning the new varobj.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   393
    "/ 
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   394
    "/ For children of **dynamic** varobjs, this is however more tricky.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   395
    "/ They have no "path". Thus, we first duplicate the parent and then 
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   396
    "/ return child of the just duplicated parent at corresponding index.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   397
    (self parent isNil or:[ self parent isDynamic not ]) ifTrue:[ 
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   398
        "/ Easy, evaluate path expression...
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   399
        dup := debugger evaluate: self path in: self frame
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   400
    ] ifFalse:[
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   401
        | dupParent |
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   402
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   403
        dupParent := self parent duplicate.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   404
        dup := dupParent children at: self index.
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   405
    ].
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   406
    "/ Make sure the duplicate has the same visualizer
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   407
    debugger isPrettyPrintingEnabled ifTrue:[ 
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   408
        self visualizer ~= GdbDefaultVisualizer ifTrue:[ 
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   409
            dup visualizer: self visualizer
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   410
        ].
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   411
    ].
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   412
    ^ dup
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   413
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   414
    "Created: / 13-02-2018 / 22:17:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   415
    "Modified: / 04-06-2018 / 15:50:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
109
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   416
! !
f57ce907abf4 Variable objects: added `GDBVariableObject >> #duplicate`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 108
diff changeset
   417
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   418
!GDBVariableObject methodsFor:'displaying'!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   419
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   420
displayOn: aStream
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   421
    self displayOn: aStream indent: 0
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   422
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   423
    "Created: / 28-01-2018 / 21:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   424
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   425
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   426
displayOn: aStream indent: anInteger
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   427
    aStream next: anInteger * 4 put: Character space.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   428
    aStream nextPutAll: exp; space; nextPut: $=; space.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   429
    self hasChildren ifTrue:[ 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   430
        aStream nextPut:${; cr.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   431
        self children do:[:each | 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   432
            each displayOn: aStream indent: anInteger + 1.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   433
            aStream cr.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   434
        ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   435
        aStream next: anInteger * 4 put: Character space; nextPut:$}.
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   436
    ] ifFalse: [ 
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   437
        aStream nextPutAll: value
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   438
    ].
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   439
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   440
    "Created: / 28-01-2018 / 21:42:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   441
! !
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   442
102
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   443
!GDBVariableObject methodsFor:'finalization'!
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   444
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   445
executor
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   446
    ^ GDBVariableObjectExecutor new 
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   447
            setDebugger: debugger;
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   448
            setId: name;
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   449
            yourself
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   450
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   451
    "Created: / 28-01-2018 / 23:27:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   452
!
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   453
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   454
finalizationLobby
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   455
    self assert: debugger notNil.
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   456
    ^ debugger finalizationRegistry.
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   457
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   458
    "Created: / 28-01-2018 / 23:21:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   459
! !
d573a3b2abe2 Variable objects: delete var. objects that are no longer needed
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 101
diff changeset
   460
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   461
!GDBVariableObject methodsFor:'initialization & release'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   462
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   463
initialize
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   464
    "Invoked when a new instance is created."
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   465
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   466
    super initialize.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   467
    inScope := true.
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   468
    dynamic := false.
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   469
    has_more := true.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   470
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   471
    "Modified: / 04-06-2018 / 10:55:17 / 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
   472
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   473
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   474
release
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   475
    "Releases the variable object and all its children. Once released, 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   476
     the variable object is invalid (i.e., `#isValid` would return `false`) 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   477
     and should not be used anymore."
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   478
202
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   479
    self release: parent isNil
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   480
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   481
    "Created: / 04-02-2018 / 23:21:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
202
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   482
    "Modified: / 22-09-2019 / 00:27:26 / 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
   483
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   484
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   485
release: delete
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   486
    "Releases the variable object and all its children. If 
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   487
     `delete` is `true`, send `-var-delete`."
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   488
202
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   489
    debugger isNil ifTrue:[ 
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   490
        "/ Already released.
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   491
        ^ self 
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   492
    ].
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   493
    self assert: (delete not or:[ parent isNil ]) description: 'Only top-level objects can be deleted (for now)'.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   494
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   495
    "/ Release all children first, but not not 'delete' them 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   496
    "/ in GDB (will be done later)
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   497
    children notEmptyOrNil ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   498
        children do: [ :child | child release:false ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   499
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   500
    children := nil.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   501
    changed := [ changed := false. true ]. 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   502
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   503
    "/ Now 'delete' the variable and all its children
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   504
    "/ in GDB
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   505
    delete ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   506
        self unregisterForFinalization.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   507
        debugger isConnected ifTrue:[
110
727d8a9e6d5d Variable objecys: added `GDBVariableObject >> #visualizer` and `#visualizer:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 109
diff changeset
   508
            debugger send: (GDBMI_var_delete arguments: (Array with: name))
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   509
        ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   510
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   511
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   512
    "/ Finally, clear the debugger instvar (it's tested in
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   513
    "/ `#isValid`
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   514
    debugger := nil.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   515
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   516
    "Created: / 13-02-2018 / 09:36:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
202
412846313554 Allow `GDBVariableObject >> release:` to be called twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 178
diff changeset
   517
    "Modified: / 22-09-2019 / 00:28:20 / 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
   518
!
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   519
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   520
setDebugger: aGDBDebugger
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   521
    super setDebugger: aGDBDebugger.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   522
    aGDBDebugger notNil ifTrue:[
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   523
        changed := GDBTransientDataHolder debugger: debugger factory: [ self updateChanged ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   524
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   525
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   526
    "Created: / 01-02-2018 / 09:29:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   527
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   528
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   529
setExpression: aString
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   530
    exp := aString
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   531
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   532
    "Created: / 28-01-2018 / 21:39:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   533
!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   534
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   535
setFrame: aGDBBrame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   536
    frame := aGDBBrame
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   537
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   538
    "Created: / 15-02-2018 / 09:29:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   539
!
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   540
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   541
setFrameId: aString
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   542
    frame := aString
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   543
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   544
    "Created: / 13-02-2018 / 21:24:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   545
!
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   546
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   547
setParent: variableObjectOrNil
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   548
    self assert: (variableObjectOrNil isNil or:[ variableObjectOrNil isKindOf: self class ]).
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   549
    self assert: debugger notNil.
210
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   550
    parent := variableObjectOrNil.
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   551
    changed := parent changed.
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   552
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   553
    "Created: / 27-01-2018 / 22:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
108
f34505ec6a7f Variable objects: keep track of frame in which variable object has been created
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 107
diff changeset
   554
    "Modified: / 13-02-2018 / 22:02:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
210
474b26f6fb75 Share "change holder" among all variable objects descending from a single parent
Jan Vrany <jan.vrany@labware.com>
parents: 203
diff changeset
   555
    "Modified: / 06-08-2020 / 07:09:52 / Jan Vrany <jan.vrany@labware.com>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   556
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   557
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   558
thread_id: anInteger
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   559
    thread := anInteger
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   560
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   561
    "Created: / 04-02-2018 / 21:25:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   562
! !
100
aab8dd376f29 Fixed SubscriptionCollection >> value:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   563
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 102
diff changeset
   564
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   565
!GDBVariableObject methodsFor:'printing & storing'!
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   566
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   567
printOn:aStream
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   568
    "append a printed representation if the receiver to the argument, aStream"
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   569
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   570
    super printOn:aStream.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   571
    aStream nextPutAll:'('.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   572
    value printOn: aStream.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   573
    aStream nextPutAll:')'.
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   574
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   575
    "Created: / 13-06-2017 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   576
! !
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   577
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   578
!GDBVariableObject methodsFor:'queries'!
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   579
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   580
hasChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   581
    ^ changed value
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   582
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   583
    "Created: / 30-01-2018 / 00:27:37 / 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
   584
    "Modified: / 04-02-2018 / 22:16:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   585
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   586
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   587
hasChildren
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   588
    self isValid ifFalse:[ ^ false ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   589
    numchild isNil ifTrue:[
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   590
        children := nil.
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   591
        ^ self children notEmptyOrNil
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   592
    ].
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   593
    ^ numchild > 0
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   594
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   595
    "Created: / 27-01-2018 / 22:47:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
112
a8138ced2f5e Fixed `GDBVariableObject >> valueFormatted:` to work even if python pretty printing is enable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   596
    "Modified: / 15-02-2018 / 13:40:01 / 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
   597
! !
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   598
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   599
!GDBVariableObject methodsFor:'testing'!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   600
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   601
inScope
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   602
   changed value. "/ to force update if necessary
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   603
    ^ inScope
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   604
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   605
    "Created: / 12-02-2018 / 21:56:38 / 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
   606
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   607
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   608
isDynamic
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   609
    "Return true, if this varobj is a dynamic varobj, false otherwise"
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   610
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   611
    ^ dynamic
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   612
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   613
    "Created: / 01-06-2018 / 16:29:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   614
!
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 112
diff changeset
   615
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   616
isValid
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   617
    changed value. "/ to force update if necessary
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   618
    ^ debugger notNil
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   619
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   620
    "Created: / 04-02-2018 / 21:33:00 / 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
   621
    "Modified: / 12-02-2018 / 22:28:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
137
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   622
!
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   623
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   624
parentIsDynamic
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   625
    ^ parent notNil and:[ parent parentIsDynamic or: [ parent isDynamic ] ]
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   626
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   627
    "Created: / 01-09-2018 / 22:52:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a98a4a226c26 Fixes in `GDBVariable` and `GDBVariableObject` to make them polymprph
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 123
diff changeset
   628
    "Modified: / 03-09-2018 / 11:32:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
101
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   629
! !
d8fee2af20b2 Variable objects: added support for composite types
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 100
diff changeset
   630
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   631
!GDBVariableObject methodsFor:'updating'!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   632
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   633
updateChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   634
    "Check for updates and update all changed variables accordingly."
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   635
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   636
    debugger isNil ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   637
        changed := false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   638
        ^ false.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   639
    ].
160
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   640
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   641
    "/ If the thread is running, we cannot check for updates...
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   642
    (frame notNil and:[frame thread isRunning]) ifTrue:[
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   643
        ^ false
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   644
    ].    
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   645
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   646
    (self thread notNil and:[ self thread isValid not]) ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   647
        self release.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   648
        ^ true
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   649
    ].
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   650
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   651
    parent notNil ifTrue:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   652
        parent updateChanged
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   653
    ] ifFalse:[
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   654
        | result changelist |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   655
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   656
        result := debugger send: (GDBMI_var_update arguments: (Array with: '--all-values' with: name)).
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   657
        changelist := result propertyAt: #changelist.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   658
        self updateChanged: changelist.        
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   659
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   660
    ^ false
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   661
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   662
    "Created: / 30-01-2018 / 01:08:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
160
b5b1e436a994 Fix `GDBVariableObject >> updateChanged` to be an noop when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
   663
    "Modified: / 01-11-2018 / 13:33:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   664
!
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   665
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   666
updateChanged: changelist
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   667
    | change |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   668
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   669
    changelist isEmptyOrNil ifTrue:[ ^ self ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   670
    change := changelist detect: [ :each | each id = self id ] ifNone:[nil].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   671
    change notNil ifTrue:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   672
        value := change value.
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   673
        inScope := change inScope.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   674
        inScope = 'invalid' ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   675
            self release.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   676
            ^ self.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   677
        ].
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   678
        changed value: true.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   679
        changelist remove: change.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   680
        changelist isEmptyOrNil ifTrue:[ ^ self ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   681
    ] ifFalse:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   682
        changed value: false.
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   683
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   684
    children notEmptyOrNil ifTrue:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   685
        children do: [ :each | each updateChanged: changelist ]
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   686
    ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   687
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   688
    "Created: / 30-01-2018 / 01:09:28 / 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
   689
    "Modified: / 12-02-2018 / 22:29:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   690
! !
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   691
83
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   692
!GDBVariableObject class methodsFor:'documentation'!
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   693
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   694
version_HG
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   695
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   696
    ^ '$Changeset: <not expanded> $'
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   697
! !
b2fb8968f1f4 Improved some #printOn: and #inspectorExtraAttributes to ease debugging
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 74
diff changeset
   698
123
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   699
1e2c548b0cde Fixed `GDBVariableObject >> #duplicate` for children od dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 122
diff changeset
   700
GDBVariableObject initialize!