GDBFrame.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 28 Jan 2019 14:56:14 +0000
changeset 173 02546d4fbe6d
parent 150 e208036a1953
child 177 e7bd05df3d6b
permissions -rw-r--r--
Fix frame of `GDBThreadSelectedEvent` if inferior is running When ifnferior is running at time we get `=thread-selected` event, we should at least make that frame kind of usable by fixing up it's debugger and thread. This allow clients to use (to some extent) event's frame without worring (too much) about these details.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     4
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     5
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     7
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     8
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     9
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    10
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    13
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    14
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    16
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    18
"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs' }"
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    21
"{ NameSpace: Smalltalk }"
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    22
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    23
GDBDebuggerObject subclass:#GDBFrame
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    24
	instanceVariableNames:'thread level addr func file fullname line arch from variables
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
    25
		registers registersChanges'
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	classVariableNames:''
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	poolDictionaries:''
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	category:'GDB-Core'
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    31
!GDBFrame class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    32
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    33
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    34
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    35
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    36
Copyright (C) 2015-now Jan Vrany
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    37
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    38
This library is free software; you can redistribute it and/or
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    39
modify it under the terms of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    40
License as published by the Free Software Foundation; either
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    41
version 2.1 of the License. 
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    42
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    43
This library is distributed in the hope that it will be useful,
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    44
but WITHOUT ANY WARRANTY; without even the implied warranty of
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    45
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    46
Lesser General Public License for more details.
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    47
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    48
You should have received a copy of the GNU Lesser General Public
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    49
License along with this library; if not, write to the Free Software
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    50
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    51
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    52
! !
71
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
    53
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
!GDBFrame class methodsFor:'accessing - GDB value descriptors'!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    56
description
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    57
    ^ (super description)
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    58
        define:#level as:Integer;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    59
        define:#func as:String;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    60
        define:#file as:String;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    61
        define:#fullname as:String;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    62
        define:#line as:Integer;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    63
        define:#from as:String;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    64
        define:#addr as:Integer;
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
        yourself
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    "Created: / 16-09-2014 / 23:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    68
    "Modified: / 15-02-2018 / 08:27:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
! !
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
!GDBFrame methodsFor:'accessing'!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
addr
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    ^ addr
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    77
address
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    78
    ^ self addr
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    79
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    80
    "Created: / 03-07-2018 / 15:10:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    81
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    82
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    83
arch
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    84
    arch isNil ifTrue:[
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    85
        arch := GDBArchitecture named: 'unknown'.
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    86
    ].
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    87
    arch isString ifTrue:[ 
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    88
        arch := GDBArchitecture named: arch
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    89
    ].
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    90
    ^ arch
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    91
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    92
    "Created: / 16-08-2018 / 06:59:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    93
    "Modified: / 16-08-2018 / 09:04:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    94
!
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    95
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    96
disassemble
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    97
    "Return instructions for a function of this frame"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
    98
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
    99
    | disassembly |
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   100
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   101
    (debugger hasFeature:'data-disassemble-a-option') ifTrue:[
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   102
        disassembly := debugger disassembleFunction: '0x', addr hexPrintString.  
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   103
    ] ifFalse:[ 
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   104
        disassembly := debugger disassembleFile: file  line: line count: nil.
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   105
    ].
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   106
    disassembly do:[ :each | each setArchitecture: self arch ].  
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   107
    ^ disassembly
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   108
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   109
    "Created: / 22-06-2018 / 12:47:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   110
    "Modified: / 16-08-2018 / 09:40:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   111
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   112
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
file
115
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   114
    "Return filename (path) containing frame's function source."
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   115
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   116
    | f |
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   117
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   118
    "/ GDB/MI provides two paths, `file` and `fullname`. 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   119
    "/ 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   120
    "/ However, sometimes GDB gets confused and does not return
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   121
    "/ anything directly useful, especially when debug info contains
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   122
    "/ relative paths with multiple segments. 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   123
    "/ 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   124
    "/ As a courtesy to the user, in that case try to resolve full
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   125
    "/ path here too. Hence the code below.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   126
    "/
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   127
    "/ To avoid re-resolving of file each time this method is called,
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   128
    "/ cache resolved Filename in `fullname` instvar. 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   129
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   130
    fullname isFilename ifTrue:[ 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   131
        "/ Already resolved by the code below
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   132
        ^ fullname pathName
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   133
    ].
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   134
115
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   135
    f := fullname ? file.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   136
    f isNil ifTrue:[ ^ nil ].
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   137
    f := f copyReplaceAll: $/ with: Filename separator.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   138
    f := f asFilename.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   139
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   140
    "/ check, if GDB returned correctly resolved filename...
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   141
    f exists ifTrue:[
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   142
        fullname := f.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   143
        ^ fullname pathName
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   144
    ].
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   145
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   146
    "/ ...if not, try to look it up in source directories...
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   147
    self debugger directories do:[:d | 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   148
        f := d asFilename / (fullname ? file).
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   149
        f exists ifTrue:[ 
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   150
            fullname := f.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   151
            ^ fullname pathName.
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   152
        ].
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   153
    ].
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   154
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   155
    "/ ...if not found there...
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   156
    ^ nil
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   157
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   158
    "Modified: / 12-03-2018 / 10:32:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
efb49f057011 API: improved `GDBFrame >> #file`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 111
diff changeset
   159
    "Modified: / 22-03-2018 / 16:52:52 / jv"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
from
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    ^ from
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
func
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    ^ func
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
level
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    ^ level
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
!
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
line
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    ^ line
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   176
!
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   177
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   178
registers
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   179
    "Return a list of mchine registers and their correcponsing
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   180
     values in this frame (as list of GDBRegisterWithValue)"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   181
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   182
    registers isNil ifTrue:[
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   183
        | registersSet result |
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   184
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   185
        "/ First, retrieve a list of register available in this
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   186
        "/ frame.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   187
        "/
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   188
        "/ To reduce MI communication overhead, registers are cached
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   189
        "/ in shared cache kept in process group (inferior). Caching is 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   190
        "/ based on an assumption that while each frame may have different 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   191
        "/ architecture, it is unlikely that  different frames with same 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   192
        "/ architecture would have different set of registers.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   193
        registersSet := self thread group registersMap at: self arch ifAbsentPut:[ 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   194
            result := debugger send: (GDBMI_data_list_register_names arguments: (Array with: '--thread' with: self thread id with: '--frame' with: self level)).
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   195
            registersSet := Dictionary new.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   196
            (result propertyAt: 'register-names') withIndexDo:[ :name :number | 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   197
                name notEmpty ifTrue:[
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   198
                    "/ Note, that GDB register indices starts with 0 (zero) like in C!!
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   199
                    registersSet at: number - 1 put: (GDBRegister new setNumber: number - 1; setName: name)
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   200
                ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   201
            ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   202
            registersSet
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   203
        ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   204
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   205
        "/ Second, fetch values and populate a collection of registers (as `GDBRegisterWithValue`). This is done
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   206
        "/ onlt once, later on, the value of registers is updated automagically (see `GDBRegisterWithValue >> value`).
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   207
        result := debugger send: (GDBMI_data_list_register_values new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: 'r')).
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   208
        registers := result propertyAt: #'register-values'.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   209
        registers do:[:value | value setFrame: self; setRegisterFrom: registersSet ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   210
    ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   211
    ^ registers value
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   212
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   213
    "Created: / 26-09-2018 / 09:51:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   214
    "Modified: / 27-09-2018 / 11:17:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   215
!
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   216
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   217
thread
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   218
    ^ thread
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   219
!
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   220
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   221
variables
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   222
    self ensureIsValid.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   223
    variables isNil ifTrue:[
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   224
        variables := GDBTransientDataHolder debugger: debugger factory:[ :old |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   225
            | result new |
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   226
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   227
            result := debugger send: (GDBMI_stack_list_variables new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: '--simple-values')).
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   228
            new := (result propertyAt: #variables) ? #().
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   229
            old notNil ifTrue:[ 
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   230
                old size == new size ifTrue:[
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   231
                    1 to: new size do:[:i | 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   232
                        | oldVar newVar |
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   233
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   234
                        oldVar := old at: i.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   235
                        newVar := new at: i.
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   236
                        newVar name = oldVar name ifTrue:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   237
                            new at: i put: (old at: i)
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   238
                        ].
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   239
                    ].
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   240
                ] ifFalse:[ 
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   241
                    "/ Sorry for this - but I'm not sure when this may happen
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   242
                    "/ so I would like get a debugger to investigate
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   243
                    self breakPoint: #jv.
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   244
                    new do:[:newVar | newVar setFrame: self ]
104
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   245
                ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   246
            ] ifFalse:[ 
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   247
                new do:[:newVar | newVar setFrame: self ]
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   248
            ].
4add55336dfe Variable objects: automagically update values whenever changed.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 103
diff changeset
   249
            new
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   250
        ].
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   251
    ].
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   252
    ^ variables value
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   253
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   254
    "Created: / 27-02-2015 / 14:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
127
1254cc005f57 Added support for 'synthetic' frame variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   255
    "Modified: / 05-07-2018 / 11:10:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
! !
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   258
!GDBFrame methodsFor:'initialization'!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   259
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   260
setAddr: aString
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   261
    addr := aString
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   262
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   263
    "Created: / 31-01-2018 / 09:50:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   264
!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   265
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   266
setLevel: anInteger
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   267
    level := anInteger
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   268
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   269
    "Created: / 15-02-2018 / 08:34:25 / 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
   270
    "Created: / 02-02-2018 / 12:16:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   271
!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   272
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   273
setLine: anInteger
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   274
    line := anInteger
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   275
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   276
    "Created: / 01-02-2018 / 10:09:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   277
!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   278
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   279
setThread: aGDBThread
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   280
    thread := aGDBThread
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   281
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   282
    "Created: / 30-01-2018 / 15:56:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   283
! !
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   284
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   285
!GDBFrame methodsFor:'printing & storing'!
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   286
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   287
displayString
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   288
    ^ String streamContents: [ :aStream |
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   289
        level printOn:aStream base: 10 size: 2 fill: Character space.
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 115
diff changeset
   290
        aStream nextPutAll:' 0x'.
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 127
diff changeset
   291
        addr printOn:aStream base: 16 size: (self arch sizeofPointer * 2) fill: $0.
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   292
        aStream nextPutAll:' '.
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   293
        func notNil ifTrue:[
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   294
            func printOn:aStream.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   295
        ] ifFalse:[ 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   296
            aStream nextPutAll: '?'
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   297
        ].
150
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   298
        file notNil ifTrue:[
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   299
            aStream nextPutAll:' ('.
150
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   300
            aStream nextPutAll: file startingAt: (file lastIndexOf: Filename separator) + 1.
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   301
            line notNil ifTrue:[
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   302
                aStream nextPutAll:':'.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   303
                line printOn:aStream.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   304
            ].
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   305
            aStream nextPutAll:')'.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 71
diff changeset
   306
        ].
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   307
    ].
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   308
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   309
    "Created: / 27-02-2015 / 15:20:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
150
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   310
    "Modified: / 06-10-2018 / 08:57:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   311
!
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   312
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   313
printOn:aStream
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   314
    "append a printed representation if the receiver to the argument, aStream"
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   315
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   316
    super printOn: aStream.
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   317
    aStream nextPutAll:'('.
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   318
    level printOn:aStream base: 10 size: 2 fill: Character space.
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   319
    aStream nextPutAll:' '.
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   320
    addr printOn:aStream.
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   321
    aStream nextPutAll:' '.
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   322
    func printOn:aStream.
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   323
    aStream nextPutAll:' - '.
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   324
    file printOn:aStream.
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   325
    aStream nextPutAll:':'.
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   326
    line printOn:aStream.
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   327
    aStream nextPutAll:')'.
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   328
55
437ee6413c74 Initial support for variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   329
    "Modified: / 27-02-2015 / 15:21:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   330
! !
fb48207b6104 Fixes in thread's stack mangement. Dispatch events to applications using their UI event loop.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 40
diff changeset
   331
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   332
!GDBFrame methodsFor:'private'!
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   333
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   334
registersChanges
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   335
    registersChanges isNil ifTrue:[ 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   336
        self isValid ifTrue:[
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   337
            registersChanges := GDBTransientDataHolder debugger: debugger factory: [ :old |
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   338
                old isNil ifTrue:[ 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   339
                    #()
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   340
                ] ifFalse:[
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   341
                    | result changed |
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   342
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   343
                    result := debugger send: (GDBMI_data_list_changed_registers new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level)).
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   344
                    changed := result propertyAt: #'changed-registers'.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   345
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   346
                    changed notEmptyOrNil ifTrue:[ 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   347
                        result := debugger send: (GDBMI_data_list_register_values new arguments: (Array with: '--thread' with: thread id with: '--frame' with: level with: 'r') , changed).
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   348
                        (result propertyAt: #'register-values') asSet.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   349
                    ] ifFalse:[ 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   350
                        #()
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   351
                    ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   352
                ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   353
            ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   354
        ] ifFalse:[ 
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   355
            registersChanges := #().
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   356
        ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   357
    ].
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   358
    ^ registersChanges value
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   359
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   360
    "Created: / 26-09-2018 / 22:35:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   361
    "Modified: / 27-09-2018 / 10:18:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   362
! !
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   363
146
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   364
!GDBFrame methodsFor:'queries'!
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   365
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   366
hasSource
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   367
    "Return `true` if a source file can is available,
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   368
     `false` otherwise."
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   369
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   370
    ^ self file notNil
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   371
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   372
    "Created: / 02-10-2018 / 10:28:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   373
!
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   374
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   375
hasSymbol
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   376
    "Return `true` if GDB find a symbol (function name) 
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   377
     for this frame's code, `false` otherwise."
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   378
150
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   379
    "/ Following test is rally, really stupid, but at
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   380
    "/ the moment there's no better way. We'd need to fix GDB/MI
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   381
    "/ to report frame type too. Sigh.
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   382
    ^ func notNil 
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   383
        and:[ func ~= '??' 
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   384
        and: [(func includesString: 'signal handler called') not]]
146
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   385
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   386
    "Created: / 02-10-2018 / 09:47:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
150
e208036a1953 Minor tweaks and workarounds in `GDBFrame`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 146
diff changeset
   387
    "Modified (comment): / 07-10-2018 / 08:22:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
146
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   388
! !
50a8d9281fdc API: add `GDBFrame >> hasSymbol` and `GDBFrame >> hasSource`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 144
diff changeset
   389
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   390
!GDBFrame methodsFor:'testing'!
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   391
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   392
isValid
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   393
    ^ thread isValid and:[addr notNil]
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   394
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   395
    "Modified: / 04-02-2018 / 21:30:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
103
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   396
! !
56bf65352505 Variable objects: preserve the identity of `GDBFrame` and `GDBVariable` objects
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   397
71
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   398
!GDBFrame class methodsFor:'documentation'!
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   399
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   400
version_HG
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   401
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   402
    ^ '$Changeset: <not expanded> $'
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   403
! !
016b716773e3 GDBFrame: fix for framew with empty variables
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   404