GDBThread.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 03 Dec 2021 09:19:03 +0000
changeset 253 df95df6c8546
parent 232 eb382c43abd9
child 256 9e2ac3a4f23c
permissions -rw-r--r--
Care for `GDBStoppedEvent >> #frame` returning `nil` Not all `GDBStoppedEvents` have frame, for example "solib" events have not (those generated when `set stop-on-solib-events 1`)
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
214
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
     4
Copyright (C) 2020-2021 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     5
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
     6
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
     7
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
     8
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
     9
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
    10
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    11
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
    12
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
    13
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
    14
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
    15
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    16
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
    17
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
    18
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
    19
"
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
"{ Package: 'jv:libgdbs' }"
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    22
"{ NameSpace: Smalltalk }"
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 51
diff changeset
    23
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    24
GDBDebuggerObject subclass:#GDBThread
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    25
	instanceVariableNames:'id group status info stack'
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	classVariableNames:''
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	poolDictionaries:''
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	category:'GDB-Core'
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
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
!GDBThread 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
214
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
    37
Copyright (C) 2020-2021 LabWare
91
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
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
    40
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
    41
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
    42
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
    43
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    44
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
    45
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
    46
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
    47
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
    48
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    49
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
    50
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
    51
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
    52
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 90
diff changeset
    53
! !
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    54
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    55
!GDBThread class methodsFor:'instance creation'!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    56
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    57
newWithDebugger: debugger id: id group: group
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    58
    ^ self new
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    59
        setDebugger: debugger;
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    60
        setId: id;
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    61
        setGroup: group;
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    62
        setStatus: GDBThreadStateRunning theOneAndOnlyInstance;
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    63
        yourself.
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    64
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    65
    "Created: / 07-09-2014 / 21:33:21 / 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
    66
    "Modified: / 14-01-2018 / 22:33:26 / jv"
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    67
! !
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    68
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
!GDBThread 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
    70
45
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    71
description
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    72
    ^ (super description)
deb908479a37 Code refactored to use Magritte to meta-describe GDB objects.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 43
diff changeset
    73
        define:#id as:Integer;
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        yourself
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    "Created: / 06-09-2014 / 02:21:07 / 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
    77
! !
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    79
!GDBThread methodsFor:'accessing'!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    80
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    81
group
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    82
    ^ group
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    83
!
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
    84
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    85
id
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    86
    ^ id
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    87
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    88
    "Created: / 07-09-2014 / 22:41:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
    89
!
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
    90
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    91
name
214
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
    92
    | i |
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
    93
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
    94
    i := self info.
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
    95
    ^ i name ? i targetId.
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    96
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    97
    "Created: / 10-03-2015 / 00:32:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
214
0c56387e5d12 Add `GDBThread >> #name`
Jan Vrany <jan.vrany@labware.com>
parents: 136
diff changeset
    98
    "Modified: / 22-02-2021 / 13:21:13 / Jan Vrany <jan.vrany@labware.com>"
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
    99
!
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   100
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   101
stack
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   102
    self ensureIsStopped.
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
   103
    ^ stack value
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   104
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   105
    "Created: / 09-09-2014 / 00:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
136
213e436320fe Fix `GDBThread >> stack` to return old stack when thread is running
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 130
diff changeset
   106
    "Modified: / 01-09-2018 / 00:11:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   107
    "Modified: / 10-03-2021 / 14:56:43 / Jan Vrany <jan.vrany@labware.com>"
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   108
!
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   109
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   110
stackButNotStale
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   111
    self ensureIsStopped.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   112
    ^ stack valueButNotStale
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   113
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   114
    "Created: / 10-03-2021 / 15:00:53 / Jan Vrany <jan.vrany@labware.com>"
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   115
!
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   116
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   117
stackPossiblyStale
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   118
    self ensureIsStopped.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   119
    ^ stack valuePossiblyStale
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   120
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   121
    "Created: / 10-03-2021 / 14:55:21 / Jan Vrany <jan.vrany@labware.com>"
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   122
!
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   123
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   124
status
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   125
    status isUnknown ifTrue:[ 
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   126
        status := self info state
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   127
    ].
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   128
    ^ status
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   129
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   130
    "Modified: / 12-07-2017 / 13:36:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   131
!
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   132
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   133
targetId
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   134
    ^ self info targetId
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   135
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   136
    "Created: / 10-03-2015 / 00:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   137
! !
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   138
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   139
!GDBThread methodsFor:'accessing-private'!
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   140
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   141
info
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   142
    info isNil ifTrue:[
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   143
        info := GDBTransientDataHolder debugger: debugger factory:[ 
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   144
            | result infos |
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   145
90
6046abc9ddf4 Replaced Squek computed arrays by more verbose `Array with:...`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   146
            result := debugger send: (GDBMI_thread_info new arguments: (Array with: id)).
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   147
            infos := result propertyAt: #threads.
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   148
            self assert: (infos isEmptyOrNil or:[ infos size == 1 and:[ infos first id = id ] ]).
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   149
            infos isEmptyOrNil 
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   150
                ifTrue:[ GDBThreadInfo new setId: id state: GDBThreadStateTerminated theOneAndOnlyInstance ] 
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 70
diff changeset
   151
                ifFalse:[ infos first ]
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   152
        ].
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   153
    ].
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   154
    ^ info value
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   155
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   156
    "Created: / 08-03-2015 / 09:07:21 / 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
   157
    "Modified: / 17-11-2017 / 20:21:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   158
! !
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   159
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   160
!GDBThread methodsFor:'displaying'!
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   161
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   162
displayString
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   163
    ^ '%1 [%2]' bindWith: self name with: self status
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   164
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   165
    "Created: / 10-03-2015 / 00:32:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   166
! !
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   167
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   168
!GDBThread methodsFor:'event handling'!
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   169
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   170
onRunningEvent: aGDBRunningEvent
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   171
    self assert: (aGDBRunningEvent threads includesIdentical: self).
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   172
    status := GDBThreadStateRunning theOneAndOnlyInstance.
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   173
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   174
    "Created: / 12-07-2017 / 13:50:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   175
!
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   176
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   177
onStoppedEvent: aGDBStoppedEvent
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   178
    self assert: (aGDBStoppedEvent threads includesIdentical: self).
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   179
    status := GDBThreadStateStopped theOneAndOnlyInstance.
232
eb382c43abd9 Fix old and horrible bug in `GDBThread >> onStoppedEvent:`
Jan Vrany <jan.vrany@labware.com>
parents: 223
diff changeset
   180
    aGDBStoppedEvent stoppedThread == self ifTrue: [
253
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   181
        "/ Carefull - not all stop events have frame, for example
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   182
        "/ solib-events have not!!
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   183
        aGDBStoppedEvent frame notNil ifTrue:[
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   184
            aGDBStoppedEvent frame   
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   185
                setDebugger: debugger;
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   186
                setThread: self;
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   187
                setLevel: 0.
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   188
        ].
232
eb382c43abd9 Fix old and horrible bug in `GDBThread >> onStoppedEvent:`
Jan Vrany <jan.vrany@labware.com>
parents: 223
diff changeset
   189
    ].
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   190
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   191
    "Created: / 12-07-2017 / 13:50:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
253
df95df6c8546 Care for `GDBStoppedEvent >> #frame` returning `nil`
Jan Vrany <jan.vrany@labware.com>
parents: 232
diff changeset
   192
    "Modified: / 02-12-2021 / 13:53:49 / Jan Vrany <jan.vrany@labware.com>"
220
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   193
!
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   194
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   195
onThreadSelectedEvent: aGDBThreadSelectedEvent
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   196
    |  frame |
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   197
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   198
    frame := aGDBThreadSelectedEvent frame.
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   199
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   200
    aGDBThreadSelectedEvent setThread: self.
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   201
    "/ Be carefull, thread may be running!!
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   202
    (false "thread isStopped and:[frame notNil]") ifTrue:[ 
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   203
        "/ This is actually not a good idea. This code is executed
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   204
        "/ within event dispatching process so one may not execute
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   205
        "/ more commands - which is what `thread stack` does. Sigh.
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   206
        aGDBThreadSelectedEvent setFrame: (self stack at: (frame level + 1))
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   207
    ] ifFalse:[ 
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   208
        "/ If it is running, at least fixup event's frame, if there's any (it may not
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   209
        "/ if the thread is running at the time of =thread-select event.
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   210
        "/ Uff, so many cases...
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   211
        frame notNil ifTrue:[
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   212
            frame 
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   213
                setDebugger: debugger;
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   214
                setThread: self.
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   215
        ].
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   216
    ].
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   217
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   218
    "Created: / 29-07-2018 / 22:21:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
372b64967435 Minor cleanup of handling of `=thread-selected` event
Jan Vrany <jan.vrany@labware.com>
parents: 214
diff changeset
   219
    "Modified: / 20-11-2019 / 22:09:37 / 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: 78
diff changeset
   220
! !
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   221
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   222
!GDBThread methodsFor:'initialization'!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   223
223
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   224
setDebugger: aGDBDebugger
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   225
    debugger := aGDBDebugger.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   226
    stack := GDBTransientDataHolder debugger: debugger factory:[ :old | 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   227
        [
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   228
            | result depth new oldFrameIndex oldFrame newFrameIndex newFrame |
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   229
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   230
            result := debugger send: (GDBMI_stack_info_depth new arguments: (Array with: '--thread' with: id with: 100)).
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   231
            depth := result propertyAt: #depth.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   232
            result := debugger send: (GDBMI_stack_list_frames new arguments: (Array with:  '--thread' with: id with: 0 with: depth - 1 )).
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   233
            new := result propertyAt: #stack.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   234
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   235
            "/ Now, walk from the bottom of the stack (the least recent frame) and
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   236
            "/ ipdate `new` array with frames from `old` array to preserve the
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   237
            "/ identity.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   238
            newFrameIndex := new size.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   239
            oldFrameIndex := old size.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   240
            [ newFrameIndex > 0 and:[ oldFrameIndex > 0 ] ] whileTrue:[ 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   241
                newFrame := new at: newFrameIndex.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   242
                oldFrame := old at: oldFrameIndex.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   243
                "/ If frame addrs matches, both frames really represent the same thing so
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   244
                "/ just replace the 'new' frame with the 'old'.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   245
                newFrame addr = oldFrame addr ifTrue:[ 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   246
                    "/ OK, the two frames are really the same thing
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   247
                    oldFrame setLevel: newFrame level. "/ Update level
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   248
                    new at: newFrameIndex put: (old at: oldFrameIndex).
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   249
                    newFrameIndex := newFrameIndex - 1.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   250
                    oldFrameIndex := oldFrameIndex - 1.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   251
                ] ifFalse:[ 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   252
                    "/ No, frame pc differs. This is the first time they differ so
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   253
                    "/ it could be the same frame just on different PC (since PC of
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   254
                    "/ caller did not change). Subsequent frames could also be "same"
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   255
                    "/ if they're inlined into caller - in this case, the PC (#addr) of
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   256
                    "/ the caller frame and inlined callee are the same.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   257
                    "/ 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   258
                    "/ So, we update subsequent frames as long as 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   259
                    "/  a) function names are the same AND
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   260
                    "/  b) PC is the same as PC of its caller
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   261
                    "/
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   262
                    "/ Complicated, isn't it?
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   263
                    | oldAddr newAddr |
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   264
                    oldAddr := oldFrame addr.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   265
                    newAddr := newFrame addr.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   266
                    [ newFrameIndex > 0 and:[ oldFrameIndex > 0 ] ] whileTrue:[
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   267
                        newFrame := new at: newFrameIndex.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   268
                        oldFrame := old at: oldFrameIndex.    
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   269
                        ("a)"oldFrame func = newFrame func and: ["b)"oldFrame addr = oldAddr and:[newFrame addr = newAddr]]) ifTrue:[ 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   270
                            "/ Update the frame...
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   271
                            oldFrame setAddr: newFrame addr.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   272
                            oldFrame setLine: newFrame line.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   273
                            oldFrame setLevel: newFrame level.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   274
                            new at: newFrameIndex put: (old at: oldFrameIndex).
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   275
                            newFrameIndex := newFrameIndex - 1.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   276
                            oldFrameIndex := oldFrameIndex - 1.    
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   277
                        ] ifFalse:[
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   278
                            "/ Terminate the loop, see the condition above.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   279
                            oldFrameIndex := 0. 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   280
                        ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   281
                    ]
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   282
                ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   283
            ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   284
            "/ For the remaining really new frames, set the debugger
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   285
            "/ and the thread.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   286
            [ newFrameIndex > 0 ] whileTrue:[ 
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   287
                newFrame := new at: newFrameIndex.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   288
                newFrame setDebugger: debugger.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   289
                newFrame setThread: self.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   290
                newFrameIndex := newFrameIndex - 1.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   291
            ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   292
            new
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   293
        ] on: GDBError do:[ :ex |
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   294
            self isRunning ifFalse:[
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   295
                ex pass.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   296
            ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   297
            old.
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   298
        ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   299
    ].
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   300
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   301
    "Created: / 10-03-2021 / 15:02:28 / Jan Vrany <jan.vrany@labware.com>"
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   302
!
5ba4abfcb7e7 Track user context (selected thread and frame) in `GDBDebugger`
Jan Vrany <jan.vrany@labware.com>
parents: 220
diff changeset
   303
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   304
setGroup: aGDBThreadGroup
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   305
    self assert: group isNil.
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   306
    group := aGDBThreadGroup.
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   307
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   308
    "Created: / 07-09-2014 / 21:32:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   309
!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   310
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   311
setId: tid
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   312
    self assert: id isNil.
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   313
    id := tid.
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   314
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   315
    "Created: / 07-09-2014 / 21:31:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   316
    "Modified: / 08-03-2015 / 09:08:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   317
!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   318
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   319
setStatus: aGDBThreadState
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   320
    status := aGDBThreadState
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   321
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   322
    "Created: / 12-07-2017 / 13:43:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   323
!
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   324
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   325
setTerminated
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   326
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   327
    "Created: / 07-09-2014 / 21:37:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   328
    "Modified: / 08-03-2015 / 09:08:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   329
! !
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   330
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   331
!GDBThread methodsFor:'printing & storing'!
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   332
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   333
printOn:aStream
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   334
    "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: 41
diff changeset
   335
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   336
    aStream nextPutAll:'thread  '.
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   337
    id printOn:aStream.
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   338
"/    aStream nextPutAll:'in group '.
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   339
"/    group id printOn:aStream.
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   340
    aStream nextPutAll:' ['.
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   341
    self status printOn:aStream.
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   342
    aStream nextPutAll:']'.
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   343
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   344
    "Modified: / 08-03-2015 / 09:07:55 / 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: 41
diff changeset
   345
! !
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   346
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   347
!GDBThread methodsFor:'private'!
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   348
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   349
ensureIsStopped
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   350
    self isStopped ifFalse:[
111
7ce18f6f18ac API: added methods for querying debugger and target features
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 106
diff changeset
   351
        (GDBInvalidObjectError newException)
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   352
            parameter:self;
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   353
            messageText:'Invalid state (thread is running or already dead)';
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   354
            raise.
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   355
    ].
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   356
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   357
    "Created: / 09-09-2014 / 00:04:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 39
diff changeset
   358
    "Modified: / 16-09-2014 / 23:51:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
39
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   359
! !
2b9d2f75906f Some work on execution stack model
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   360
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   361
!GDBThread methodsFor:'testing'!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   362
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   363
isDead
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   364
    ^ self isTerminated
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   365
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   366
    "Created: / 22-09-2014 / 00:54:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   367
    "Modified: / 08-03-2015 / 12:35:23 / 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
   368
    "Modified: / 14-01-2018 / 22:34:04 / jv"
43
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   369
!
22236b6d1d9a Remove threads from thread group when threadgroup terminates.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   370
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   371
isRunning
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   372
    ^ self status isRunning
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   373
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   374
    "Created: / 07-09-2014 / 23:23:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   375
    "Modified: / 08-03-2015 / 09:08:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   376
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   377
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   378
isStopped
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   379
    ^ self status isStopped
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   380
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   381
    "Created: / 07-09-2014 / 23:23:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   382
    "Modified: / 08-03-2015 / 09:08:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   383
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   384
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   385
isTerminated
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   386
    ^ self status isTerminated
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   387
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   388
    "Created: / 07-09-2014 / 23:23:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
67
c4ac76afe03d Keep thread information in transient thread-info object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 55
diff changeset
   389
    "Modified: / 08-03-2015 / 09:08:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
106
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   390
!
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   391
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   392
isValid
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   393
    ^ group isValid and:[ self isDead not ]
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   394
12c96f17fc53 Variable objects: invalidate variable object when thread on inferior terminates
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 104
diff changeset
   395
    "Created: / 04-02-2018 / 21:31:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   396
! !
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   397
70
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   398
!GDBThread class methodsFor:'documentation'!
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   399
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   400
version_HG
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   401
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   402
    ^ '$Changeset: <not expanded> $'
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   403
! !
6d7285bb1703 GDBThread: use native name in thread's displayString
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 67
diff changeset
   404