GDBThreadGroup.st
author Jan Vrany <jan.vrany@labware.com>
Mon, 04 Sep 2023 14:00:57 +0100
changeset 314 4a2ef5a087f0
parent 311 aaa582ae8897
child 315 91819b724b59
permissions -rw-r--r--
Add MI parser test This commit add test to parse real-world frament which failed to Pharo properly at some point. It is encoded here as bytearray to make sure all the characters are preserved exactly as they were.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
     1
"{ Encoding: utf8 }"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
     2
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     3
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
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: 90
diff changeset
     5
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
     6
Copyright (C) 2020-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     7
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
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: 240
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: 240
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: 240
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: 240
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: 240
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: 90
diff changeset
    14
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
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: 240
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: 90
diff changeset
    17
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
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: 240
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: 240
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: 240
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: 240
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: 240
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: 240
diff changeset
    24
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    25
"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"{ Package: 'jv:libgdbs' }"
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
60
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    28
"{ NameSpace: Smalltalk }"
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    29
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    30
GDBDebuggerObject subclass:#GDBThreadGroup
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
    31
	instanceVariableNames:'id type executable running pid exit_code threads registersMap'
124
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    32
	classVariableNames:'ExecutableSentinel'
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    33
	poolDictionaries:'GDBCommandStatus'
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    34
	category:'GDB'
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    37
!GDBThreadGroup class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    38
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    39
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    40
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    41
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
    42
Copyright (C) 2015-now Jan Vrany
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    43
Copyright (C) 2020-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    44
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    45
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: 240
diff changeset
    46
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    47
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    48
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    49
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: 240
diff changeset
    50
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: 90
diff changeset
    51
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    52
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: 240
diff changeset
    53
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: 90
diff changeset
    54
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    55
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: 240
diff changeset
    56
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    57
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    58
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    59
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 240
diff changeset
    60
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: 240
diff changeset
    61
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    62
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    63
! !
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    64
124
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    65
!GDBThreadGroup class methodsFor:'initialization'!
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    66
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    67
initialize
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    68
    "Invoked at system start or when the class is dynamically loaded."
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    69
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    70
    ExecutableSentinel := Object new.
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    71
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    72
    "Modified: / 07-06-2018 / 10:05:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    73
! !
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
    74
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
!GDBThreadGroup class methodsFor:'instance creation'!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    77
new
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    78
    "return an initialized instance"
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    79
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    80
    ^ self basicNew initialize.
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    81
!
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
    82
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    83
newWithDebugger: debugger id: aString
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    84
    ^ self new setDebugger: debugger; setId: aString; yourself
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    86
    "Created: / 07-09-2014 / 21:18:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
!GDBThreadGroup class methodsFor:'accessing - GDB value descriptors'!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    91
description
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    92
    ^ (super description)
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    93
        define:#id as:String;
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    94
        define:#pid as:Integer;
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    95
        yourself.
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    96
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    97
    "
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    98
    self description
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
    99
    "
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "Created: / 06-09-2014 / 02:21:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   102
    "Modified (comment): / 01-10-2014 / 01:29:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   103
!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   104
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   105
descriptionType
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   106
    ^ Magritte::MASingleOptionDescription new
90
6046abc9ddf4 Replaced Squek computed arrays by more verbose `Array with:...`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   107
        optionsAndLabels: (Array with: 
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   108
            GDBThreadGroupTypeProcess -> 'process'  
90
6046abc9ddf4 Replaced Squek computed arrays by more verbose `Array with:...`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   109
        );
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   110
        accessor: (GDBMAPropertyAccessor forPropertyNamed: 'type');
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   111
        label: 'type';
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   112
        comment: 'The type of the thread group. At present, only ‘process’ is a valid type.';
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   113
        yourself.
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   114
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   115
    "Created: / 01-10-2014 / 01:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
90
6046abc9ddf4 Replaced Squek computed arrays by more verbose `Array with:...`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   116
    "Modified: / 17-11-2017 / 20:08:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
!GDBThreadGroup methodsFor:'accessing'!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   121
executable
124
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   122
    "Return name path of the executable (if known) or nil (if unknown)"
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   123
117
17e5e955c3c1 Fix: do not try to retrieve executable path if inferior is running and async mode is available
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   124
    (executable isNil and:[ pid notNil and:[self isStopped or:[debugger hasFeature:'async']]]) ifTrue:[
174
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 173
diff changeset
   125
        debugger send: GDBMI_list_thread_groups new andWithResultDo:[:result|
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 173
diff changeset
   126
            | tg |
117
17e5e955c3c1 Fix: do not try to retrieve executable path if inferior is running and async mode is available
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   127
234
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   128
            result status == CommandStatusDone ifTrue:[ 
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   129
                tg := (result propertyAt: 'groups') detect: [: each | each id = id ].
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   130
                "/ In some cases the executable is not known - it may not exist (such as
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   131
                "/ when debugging bare-metal code) or the target does not report it
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   132
                "/ (may happen, for example wine's winedbg GDB proxy does not report
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   133
                "/ executable names).
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   134
                "/ 
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   135
                "/ In this case, we store a sentinel object in `executable` instvar
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   136
                "/ to prevent repeated queries which are bound to fail (see the nil-check
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   137
                "/ above.
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   138
                executable := tg executableOrNil ? ExecutableSentinel.
174
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 173
diff changeset
   139
            ].
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   140
        ].
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   141
    ].
124
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   142
    ^ executable == ExecutableSentinel ifTrue:[ nil ] ifFalse:[ executable ]
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   143
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   144
    "Created: / 06-06-2017 / 00:04:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
117
17e5e955c3c1 Fix: do not try to retrieve executable path if inferior is running and async mode is available
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   145
    "Modified: / 26-03-2018 / 21:44:53 / jv"
174
18ef81a3fee5 Add `GDBCLICommand >> #operation` returning (expanded) CLI command
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 173
diff changeset
   146
    "Modified: / 28-01-2019 / 14:57:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
234
ef1cbbc5b735 Fix race in `GDBThreadGroup >> #executable`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   147
    "Modified: / 28-07-2021 / 18:18:56 / Jan Vrany <jan.vrany@labware.com>"
124
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   148
!
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   149
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   150
executableOrNil
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   151
    ^ executable
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   152
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   153
    "Created: / 06-06-2018 / 15:43:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   154
!
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   155
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
exitCode
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    ^ exit_code
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    "Created: / 07-09-2014 / 12:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
id
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    ^ id
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
240
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   166
memoryAt: address count: numBytes
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   167
    "
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   168
    Read `numBytes` starting at `address` from debugee memory and return
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   169
    bytes (as ByteArray).
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   170
    "
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   171
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   172
    | result regions |
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   173
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   174
    result := debugger send: (GDBMI_data_read_memory_bytes arguments: (Array with: '--thread' with: self threads anyOne id with: address with: numBytes)).
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   175
    regions := result propertyAt: #memory.
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   176
    self assert: regions size == 1 description: 'Oops, got more than one region.'.
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   177
    ^regions first propertyAt: #contents
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   178
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   179
    "Created: / 15-06-2020 / 11:51:27 / Jan Vrany <jan.vrany@labware.com>"
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   180
!
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   181
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   182
memoryAt: address put: bytes
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   183
    "
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   184
    Write `bytes` to debugee memory at address `address`. 
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   185
    "
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   186
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   187
    self memoryAt: address put: bytes startingAt: 1 count: bytes size.
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   188
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   189
    "Created: / 15-06-2020 / 13:31:43 / Jan Vrany <jan.vrany@labware.com>"
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   190
!
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   191
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   192
memoryAt: address put: bytes startingAt: bytesOffset count: numBytes
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   193
    "
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   194
    Write `numBytes` starting at `byteOffset` from `bytes` to debugee memory at address `address`. 
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   195
    "
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   196
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   197
    | bytesAsString |
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   198
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   199
    self assert: (bytes size) >= (bytesOffset + numBytes - 1).
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   200
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   201
    bytesAsString := String streamContents: [ :s| bytesOffset to: bytesOffset + numBytes - 1 do: [:i | (bytes at: i) printOn:s paddedWith:$0 to:2 base:16 ] ].    
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   202
    debugger send: (GDBMI_data_write_memory_bytes arguments: (Array with: '--thread' with: self threads anyOne id with: address with: bytesAsString with: numBytes)).
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   203
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   204
    "Created: / 15-06-2020 / 13:02:17 / Jan Vrany <jan.vrany@labware.com>"
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   205
!
ca26df09063d Add (some) simple ULD / SmallRSP -like APIs to `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 234
diff changeset
   206
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
pid
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
    ^ pid
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
220
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 208
diff changeset
   211
threadForId: tid 
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 208
diff changeset
   212
    ^ threads ? #() 
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 208
diff changeset
   213
        detect: [:e | e isDead not and: [ e id = tid ] ]
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 208
diff changeset
   214
        ifNone: [ self error: ('No thread with id ''%1'' found!!' bindWith: tid) ].
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   215
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   216
    "Created: / 07-09-2014 / 21:37:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   217
    "Modified: / 22-09-2014 / 01:23:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   218
!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   219
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
threads
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
    threads isNil ifTrue:[ 
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
        threads := List new.
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   223
    ]. 
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   224
    ^ threads
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   225
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   226
    "Modified: / 06-09-2014 / 02:23:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   227
    "Modified (format): / 07-09-2014 / 21:42:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
60
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   228
!
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   229
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   230
type
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   231
    ^ type
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   232
! !
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   233
311
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   234
!GDBThreadGroup methodsFor:'displaying'!
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   235
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   236
displayOn: aStream
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   237
    
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   238
    | executableOrThreadGrouppId pidOrEmpty state |
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   239
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   240
    self executable notNil ifTrue:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   241
        executableOrThreadGrouppId := self executable contractTo: 30 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   242
    ] ifFalse:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   243
        executableOrThreadGrouppId := 'thread group ', id asString.
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   244
    ].
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   245
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   246
    (self type = 'process' and:[ self pid notNil ]) ifTrue:[
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   247
        pidOrEmpty := 'pid ', self pid printString , ', '.
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   248
    ].
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   249
    self isStopped ifTrue:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   250
        state := 'stopped'
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   251
    ] ifFalse:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   252
    self isRunning ifTrue:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   253
        state := 'running'
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   254
    ] ifFalse:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   255
    self isFinished ifTrue:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   256
        state := 'finished'
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   257
    ] ifFalse:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   258
    self isTerminated ifTrue:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   259
        state := 'terminated'
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   260
    ] ifFalse:[ 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   261
        state := 'not run'
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   262
    ]]]].
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   263
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   264
    aStream 
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   265
        nextPutAll: executableOrThreadGrouppId;
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   266
        nextPutAll: ' [';
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   267
        nextPutAll: pidOrEmpty ? '';
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   268
        nextPutAll: state;
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   269
        nextPutAll: ']'
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   270
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   271
    "Created: / 29-08-2023 / 11:46:18 / Jan Vrany <jan.vrany@labware.com>"
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   272
! !
aaa582ae8897 Add a bunch of `#displayOn:` methods
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   273
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   274
!GDBThreadGroup methodsFor:'event handling'!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   275
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   276
onThreadCreatedEvent:aGDBThreadCreatedEvent 
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   277
    | thread |
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   278
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   279
    threads isNil ifTrue:[
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   280
        threads := List new.
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    ].
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   282
    thread := GDBThread 
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   283
            newWithDebugger:debugger
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   284
            id:aGDBThreadCreatedEvent threadId
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   285
            group:self.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   286
    threads add:thread.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   287
    aGDBThreadCreatedEvent setThread:thread.
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   288
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   289
    "Created: / 07-09-2014 / 21:25:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   290
!
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   292
onThreadExitedEvent:aGDBThreadExitedEvent 
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   293
    | thread |
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   294
220
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 208
diff changeset
   295
    thread := self threadForId: aGDBThreadExitedEvent threadId.
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   296
    threads remove: thread.
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
   297
    thread setStatus: GDBThreadStateTerminated theOneAndOnlyInstance.
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   298
    aGDBThreadExitedEvent setThread:thread.
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   299
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   300
    "Created: / 07-09-2014 / 21:25:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 81
diff changeset
   301
    "Modified: / 12-07-2017 / 13:42:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   302
    "Modified: / 15-01-2018 / 09:44:09 / jv"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
!GDBThreadGroup methodsFor:'initialization'!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   307
initialize
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   308
    "Invoked when a new instance is created."
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   309
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   310
    running := false.
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   311
    registersMap := Dictionary new.
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   312
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   313
    "Modified: / 26-09-2018 / 09:53:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   314
!
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   315
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   316
reset
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   317
    "Reset all internal caches. Invoked bu debugger when an inferior
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   318
     starts. This is necessary since GDB recycles inferors and so we
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   319
     do."
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   320
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   321
    registersMap := Dictionary new.
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   322
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   323
    "Created: / 26-09-2018 / 10:58:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   324
!
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   325
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
setExitCode: anInteger
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
    exit_code := anInteger.
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   328
    running := false.
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   329
    threads removeAll.
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
    "Created: / 06-09-2014 / 02:33:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   332
    "Modified: / 06-06-2017 / 00:24:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
setId: aString
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
    id := aString.
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
    "Created: / 06-09-2014 / 02:32:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
setPid: anInteger
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
    pid := anInteger.
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
    exit_code := nil.
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   344
    executable := nil.
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   345
    running := true.
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
    "Created: / 06-09-2014 / 02:32:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   348
    "Modified: / 06-06-2017 / 00:24:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   351
!GDBThreadGroup methodsFor:'printing & storing'!
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   352
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   353
printOn:aStream
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   354
    "append a printed representation if the receiver to the argument, aStream"
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   355
60
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   356
    super printOn: aStream.
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   357
    aStream nextPutAll:'(id '.
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   358
    id printOn:aStream.
60
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   359
    aStream nextPutAll:', pid '.
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   360
    pid printOn:aStream.
60
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   361
    aStream nextPutAll:')'.
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   362
60
ab92b3e4aecf Changed GDBThreadGroup>>printOn:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
   363
    "Modified: / 02-03-2015 / 07:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   364
! !
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   365
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
!GDBThreadGroup methodsFor:'private'!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
144
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   368
registersMap
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   369
    ^ registersMap
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   370
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   371
    "Created: / 26-09-2018 / 10:01:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   372
!
342b6dfe3a6f Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 129
diff changeset
   373
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
threadAdd: aGDBThread
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
    self threads add: aGDBThread
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
    "Created: / 06-09-2014 / 02:23:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
threadRemove: aGDBThread
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
    self threads remove: aGDBThread
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
    "Created: / 06-09-2014 / 02:23:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
!GDBThreadGroup methodsFor:'testing'!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
isDead
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   389
    "Return true if program finished, either normally or abruptly (usng `kill` command).
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   390
     To tell whether is has finished normally or it has been terminated see
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   391
     #isFinished and / or #isTerminated"
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   392
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   393
    ^ self isRunning not and:[ pid notNil ]
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
    "Created: / 06-09-2014 / 02:38:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   396
    "Modified: / 06-06-2017 / 09:22:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   397
!
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   398
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   399
isFinished
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   400
    "Return true if program finished its execution normally (as opposed to be
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   401
     terminated by the debugger), false otherwise. 
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   402
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   403
     @see also #isTerminated
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   404
     @see also #isDead
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   405
    "
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   406
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   407
    ^ self isDead  and:[ exit_code notNil ]
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   408
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   409
    "Created: / 06-06-2017 / 09:23:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
isRunning
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   413
    "Return true, if program is currently running, false otherwise.
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   414
     Note, that program is running even of it's stopped byt the debugger.
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   415
     See #isStopped"
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   416
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   417
    ^ running
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
    "Created: / 06-09-2014 / 02:38:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   420
    "Modified: / 06-06-2017 / 00:25:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   421
!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   422
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   423
isStopped
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   424
    ^ threads notEmptyOrNil and:[ threads anySatisfy: [:t | t isStopped ] ].
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   425
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   426
    "Created: / 30-09-2014 / 00:49:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
81
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   427
!
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   428
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   429
isTerminated
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   430
    "Return true if program has been terminated (as opposed to finishing normally),
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   431
     false otherwise.
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   432
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   433
     @see also #isFinished
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   434
     @see also #isDead
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   435
    "
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   436
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   437
    ^ self isDead and:[ exit_code isNil ]
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   438
5e07808d349f Fixed and improvemets in `GDBThreadGroup` API
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 60
diff changeset
   439
    "Created: / 06-06-2017 / 09:26:31 / 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: 95
diff changeset
   440
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   441
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   442
isValid
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   443
    ^ debugger isConnected and:[ self isDead not ]
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   444
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   445
    "Created: / 04-02-2018 / 21:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
51
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   448
!GDBThreadGroup class methodsFor:'documentation'!
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   449
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   450
version_HG
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   451
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   452
    ^ '$Changeset: <not expanded> $'
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   453
! !
2fa20404923c Introduced GDBThreadGroupType.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 45
diff changeset
   454
124
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   455
74c24ce40251 Fixed `GDBThreadGroup >> #executable` for case where executable ir not known (reported)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 117
diff changeset
   456
GDBThreadGroup initialize!