GDBDebugger.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 13 Sep 2017 22:11:51 +0100
changeset 88 90c50fd6374c
parent 87 50e80d25ea6f
child 89 ba62d486014f
permissions -rw-r--r--
Introduced new exception class: `GDBCommandFailedError` ...that is raised from `GDBDebugger >> #send:andWait:` when used synchronously (that is, when waiting for command result). This allows senders to catch the command failures specifically.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:libgdbs' }"
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
53
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     3
"{ NameSpace: Smalltalk }"
63669c2c0f9e Test fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
     4
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
     5
Object subclass:#GDBDebugger
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
     6
	instanceVariableNames:'connection commandSequenceNumber inferiorStateSequenceNumber
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
     7
		inferiors breakpoints selectedInferior selectedThread
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
     8
		selectedFrame prettyPrintingEnabled frameFiltersEnabled'
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	classVariableNames:''
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    10
	poolDictionaries:'GDBCommandStatus'
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
	category:'GDB-Core'
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    14
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    15
!GDBDebugger class methodsFor:'instance creation'!
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
new
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    18
    ^ self newWithProcess: GDBUnixProcess new
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    19
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    20
    "Modified: / 20-06-2014 / 21:44:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    21
!
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    23
newWithProcess: aGDBProcess
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    24
    ^ self basicNew initializeWithProcess: aGDBProcess
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    25
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    26
    "Created: / 20-06-2014 / 21:44:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
! !
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
    29
!GDBDebugger methodsFor:'accessing'!
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    30
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    31
announcer
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    32
    ^ connection eventAnnouncer.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    33
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    34
    "Created: / 02-06-2014 / 23:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    35
!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    36
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    37
breakpoints
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    38
    breakpoints isNil ifTrue:[ 
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    39
        breakpoints := List new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    40
    ].
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    41
    ^ breakpoints
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    42
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    43
    "Created: / 06-07-2017 / 16:06:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    44
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    45
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    46
consoleInput
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    47
    ^ connection consoleInput
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    48
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    49
    "Created: / 31-05-2017 / 23:20:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    50
    "Modified: / 02-06-2017 / 23:13:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    51
!
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    52
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    53
consoleOutput
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    54
    ^ connection consoleOutput
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    55
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    56
    "Created: / 31-05-2017 / 23:20:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    57
    "Modified: / 02-06-2017 / 23:13:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    58
!
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    59
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    60
inferiorForId: id
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    61
    ^ inferiors ? #() detect:[:e | e id = id ] ifNone:[ 
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    62
        self error: ('No inferior (thread group) with id ''%1'' found!!' bindWith: id)
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    63
    ].
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:22:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    66
!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
    67
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    68
inferiorStderr
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    69
    ^ connection inferiorPTY master
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    70
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    71
    "Created: / 09-06-2014 / 10:01:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
474fbb650afe PTY support refactored to use GDBPTY object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    72
    "Modified: / 09-06-2014 / 18:26:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    73
!
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    74
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    75
inferiorStdin
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    76
    ^ connection inferiorPTY master
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    77
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    78
    "Created: / 09-06-2014 / 10:00:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
474fbb650afe PTY support refactored to use GDBPTY object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    79
    "Modified: / 09-06-2014 / 18:27:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    80
!
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    81
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    82
inferiorStdout
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
    83
    ^ connection inferiorPTY master
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    84
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
    85
    "Created: / 09-06-2014 / 10:01:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
11
474fbb650afe PTY support refactored to use GDBPTY object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
    86
    "Modified: / 09-06-2014 / 18:27:11 / 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: 25
diff changeset
    87
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    88
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
    89
inferiors
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    90
    ^ inferiors ? #()
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    91
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
    92
    "Modified: / 06-07-2017 / 16:06:00 / 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
    93
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    94
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    95
selectedInferior
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    96
    selectedInferior isNil ifTrue:[ 
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    97
        inferiors size == 1 ifTrue:[ 
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    98
            ^ inferiors anElement.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
    99
        ].
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   100
    ].
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   101
    ^ selectedInferior
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   102
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   103
    "Created: / 07-09-2014 / 23:02:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   104
! !
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   105
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   106
!GDBDebugger methodsFor:'accessing-private'!
10
f04a22c9b16c Use special PTY for inferior input/output...
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 9
diff changeset
   107
19
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   108
currentInferiorStateSequnceNumber
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   109
    ^ inferiorStateSequenceNumber
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   110
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   111
    "Created: / 19-06-2014 / 22:22:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   112
!
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   113
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   114
nextCommandSequnceNumber
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   115
    commandSequenceNumber := commandSequenceNumber + 1.
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   116
    commandSequenceNumber == SmallInteger maxVal ifTrue:[ 
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   117
        commandSequenceNumber := 0.
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   118
    ].
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   119
    ^ commandSequenceNumber
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   120
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   121
    "Created: / 02-06-2014 / 23:48:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   122
!
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   123
19
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   124
nextInferiorStateSequnceNumber
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   125
    inferiorStateSequenceNumber := inferiorStateSequenceNumber + 1.
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   126
    inferiorStateSequenceNumber == SmallInteger maxVal ifTrue:[
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   127
        inferiorStateSequenceNumber := 0.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   128
    ].
19
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   129
    ^ inferiorStateSequenceNumber
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   130
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   131
    "Created: / 02-06-2014 / 23:48:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   132
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   133
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   134
!GDBDebugger methodsFor:'commands'!
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   135
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   136
send: command
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   137
    "Execute given `command` and wait until it finishes and return its result.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   138
     `command` may be either a GDBCommand or string, in which case it will
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   139
     be parsed into a GDBCommand. 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   140
   "
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   141
    ^ self send:command andWait:true.
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   142
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   143
    "Created: / 03-06-2014 / 00:10:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   144
    "Modified (comment): / 08-03-2015 / 05:50:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   145
!
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   146
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   147
send:command andWait:wait 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   148
    "Sends given `command` to GDB. If `wait` is true, wait for
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   149
     command to finish and return the command result.  
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   150
     Otherwise, return nil immediately.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   151
85
6fea1000a2a5 Implemented proper quoting of MI commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   152
     If `wait` is true and if command results in an error GDBError
6fea1000a2a5 Implemented proper quoting of MI commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   153
     is thrown.
6fea1000a2a5 Implemented proper quoting of MI commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   154
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   155
     `command` may be either a GDBCommand or string, in which case it will
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   156
     be parsed into a GDBCommand.           
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   157
    "
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   158
    
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   159
    | cmd  token  blocker  handler1  handler2  result |
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   160
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   161
    cmd := command.
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   162
    cmd isString ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   163
        cmd := GDBCLICommand new value:cmd.
56
20989de12cfb More work on variables + tests
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 53
diff changeset
   164
    ].
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   165
    token := self nextCommandSequnceNumber.
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   166
    cmd token:token.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   167
    ^ wait ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   168
        self assert:Processor activeProcess ~~ connection eventDispatchProcess
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   169
            message:'Cannot send commands from within event dispatching process. Would deadlock'.                
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   170
        handler1 := [:ev | 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   171
            ev token == token ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   172
                connection eventAnnouncer unsubscribe:handler1.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   173
                result := ev result.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   174
                connection eventAnnouncerInternal when:GDBEventSetProcessingFinished
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   175
                    do:handler2.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   176
            ]
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   177
        ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   178
        handler2 := [:ev | 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   179
            connection eventAnnouncerInternal unsubscribe:handler2.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   180
            blocker signal.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   181
        ].
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   182
        blocker := Semaphore new.
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   183
        connection eventAnnouncer when:GDBCommandResultEvent do:handler1.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   184
        connection pushEvent:(GDBCommandEvent new command:cmd).
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   185
        blocker wait.
85
6fea1000a2a5 Implemented proper quoting of MI commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   186
        result isError ifTrue:[
88
90c50fd6374c Introduced new exception class: `GDBCommandFailedError`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   187
            GDBCommandFailedError raiseForResult: result.
85
6fea1000a2a5 Implemented proper quoting of MI commands
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 82
diff changeset
   188
        ].
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   189
        result.
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   190
    ]
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   191
    ifFalse:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   192
        connection pushEvent:(GDBCommandEvent new command:cmd).
40
0ce76b671515 Some more support for stack frames.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 38
diff changeset
   193
        nil.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   194
    ]
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   195
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   196
    "Created: / 02-06-2014 / 23:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
88
90c50fd6374c Introduced new exception class: `GDBCommandFailedError`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 87
diff changeset
   197
    "Modified: / 13-09-2017 / 14:46:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   198
!
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   199
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   200
send:command andWaitFor:eventHandlers
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   201
    "Sends given `command` to GDB and then wait for events mathing 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   202
     `eventHandlers`. 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   203
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   204
     Params:
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   205
     `command`      may be either a GDBCommand or string, in which case it will
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   206
                    be parsed into a GDBCommand.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   207
     `eventHandler` may be either nil or event class or one arg block or collection
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   208
                    of event classes or blocks.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   209
                    - If nil then do not wait for anything (use nil for async send)
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   210
                    - If event class, then wait for an event of that class. Note, that
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   211
                      subclasses are handled too.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   212
                    - If block, then wait for an event for which the block returns true.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   213
                    - If collectio, then wait for a sequence of events, each matched as above.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   214
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   215
     Returns:       a matching event or events (in case a collection of handlers has been passes)"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   216
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   217
    ^ self send: command andWaitFor: eventHandlers withTimeoutMs: nil
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   218
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   219
    "Created: / 08-03-2015 / 06:03:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   220
!
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   221
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   222
send:command andWaitFor:eventHandlers withTimeoutMs:timeout 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   223
    "Sends given `command` to GDB and then wait for events mathing 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   224
     `eventHandlers`. Raise a TimeoutError if expected events don't arrive
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   225
     in specified time.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   226
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   227
     Params:
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   228
     `command`      may be either a GDBCommand or string, in which case it will
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   229
                    be parsed into a GDBCommand.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   230
     `eventHandler` may be either nil or event class or one arg block or collection
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   231
                    of event classes or blocks.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   232
                    - If nil then do not wait for anything (use nil for async send)
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   233
                    - If event class, then wait for an event of that class. Note, that
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   234
                      subclasses are handled too.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   235
                    - If block, then wait for an event for which the block returns true.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   236
                    - If collectio, then wait for a sequence of events, each matched as above.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   237
     `timeout`       wait at most that much milliseconds, throw TimeoutError otherwise. If `timeout` == mil
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   238
                    then wait for indefinitly
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   239
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   240
     Returns:       a matching event or events (in case a collection of handlers has been passes)"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   241
    
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   242
    | commandObject |
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   243
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   244
    command isString ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   245
        commandObject := (GDBMIParser on:command) parseCommand.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   246
        commandObject token:self nextCommandSequnceNumber.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   247
    ] ifFalse:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   248
        commandObject := command.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   249
        commandObject token isNil ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   250
            commandObject token:self nextCommandSequnceNumber.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   251
        ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   252
    ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   253
    ^ self 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   254
        do:[ connection pushEvent:(GDBCommandEvent new command: commandObject) ] 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   255
        andWaitFor: eventHandlers 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   256
        withTimeoutMs: timeout
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   257
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   258
    "Created: / 07-03-2015 / 11:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   259
    "Modified: / 08-03-2015 / 07:31:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   260
! !
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   261
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   262
!GDBDebugger methodsFor:'commands - API'!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   263
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   264
attach: aStringOrInteger
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   265
    "Attach to a running process.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   266
     API equivalent to CLI command:
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   267
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   268
        (gdb) attach <aStringOrInteger>
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   269
    "
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   270
    self send:(GDBMI_target_attach arguments:{ aStringOrInteger asString }) andWait: true.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   271
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   272
    "Created: / 05-06-2017 / 17:08:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   273
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   274
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   275
enableFrameFilters
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   276
    "Enables frame filters & frame decorators for MI interface. Once enabled,
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   277
     cannot be turned off.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   278
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   279
     @see GDBMI_enable_frame_filters"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   280
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   281
    | result |
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   282
    result := self send: GDBMI_enable_frame_filters new.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   283
    result isDone ifTrue:[ 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   284
        frameFiltersEnabled := true.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   285
    ] ifFalse:[ 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   286
        GDBError raiseErrorString: 'failed to enable frame filters'
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   287
    ].
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   288
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   289
    "Created: / 12-06-2017 / 09:29:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   290
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   291
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   292
enablePrettyPrinting
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   293
    "Enables pretty printing for MI interface. Once enabled,
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   294
     cannot be turned off.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   295
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   296
     @see GDBMI_enable_pretty_printing"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   297
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   298
    | result |
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   299
    result := self send: GDBMI_enable_pretty_printing new.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   300
    result isDone ifTrue:[ 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   301
        prettyPrintingEnabled := true.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   302
    ] ifFalse:[ 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   303
        GDBError raiseErrorString: 'failed to enable pretty printing'
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   304
    ].
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   305
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   306
    "Created: / 12-06-2017 / 09:29:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   307
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   308
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   309
executable: aStringOrFilename
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   310
    "Sets the executable to debug. 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   311
     API equivalent to CLI command:
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   312
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   313
        (gdb) exec-file <aStringOrFilename>
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   314
    "
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   315
    self executable: aStringOrFilename arguments: nil
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   316
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   317
    "Created: / 28-02-2015 / 00:19:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   318
    "Modified: / 05-06-2017 / 17:06:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   319
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   320
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   321
executable: aStringOrFilename arguments: anArray"of String"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   322
    "Sets the executable to debug and argument to pass to it.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   323
     API equivalent to CLI command:
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   324
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   325
        (gdb) exec-file <aStringOrFilename>   
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   326
        (gdb) set args <anArray>
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   327
    "
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   328
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   329
    self send:(GDBMI_file_exec_and_symbols arguments:{ aStringOrFilename asString }) andWait: true.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   330
    anArray notEmptyOrNil ifTrue:[ 
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   331
        self send: (GDBMI_exec_arguments arguments: anArray) andWait: true.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   332
    ].
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   333
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   334
    "Created: / 05-06-2017 / 17:05:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   335
! !
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   336
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   337
!GDBDebugger methodsFor:'evaluating'!
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   338
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   339
do: block andWaitFor:eventHandlers
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   340
    "Evaluates a given block and then wait for events.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   341
     `eventHandlers`. 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   342
     Params:
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   343
     `block`        block to evaluate
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   344
     `eventHandler` may be either nil or event class or one arg block or collection
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   345
                    of event classes or blocks.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   346
                    - If nil then do not wait for anything (use nil for async send)
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   347
                    - If event class, then wait for an event of that class. Note, that
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   348
                      subclasses are handled too.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   349
                    - If block, then wait for an event for which the block returns true.
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   350
                    - If collection, then wait for a sequence of events, each matched as above.
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   351
     Returns:       a matching event or events (in case a collection of handlers has been passed)"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   352
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   353
    ^ self do: block andWaitFor: eventHandlers withTimeoutMs: nil
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   354
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   355
    "Created: / 08-03-2015 / 07:30:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   356
    "Modified (comment): / 12-06-2017 / 09:31:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   357
!
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   358
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   359
do: block andWaitFor:eventHandlers withTimeoutMs:timeout 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   360
    "Evaluates a given block and then wait for events.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   361
     `eventHandlers`. Raise a TimeoutError if expected events don't arrive
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   362
     in specified time.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   363
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   364
     Params:
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   365
     `block`        block to evaluate
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   366
     `eventHandler` may be either nil or event class or one arg block or collection
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   367
                    of event classes or blocks.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   368
                    - If nil then do not wait for anything (use nil for async send)
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   369
                    - If event class, then wait for an event of that class. Note, that
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   370
                      subclasses are handled too.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   371
                    - If block, then wait for an event for which the block returns true.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   372
                    - If collectio, then wait for a sequence of events, each matched as above.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   373
     `timeout`       wait at most that much milliseconds, throw TimeoutError otherwise. If `timeout` == mil
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   374
                    then wait for indefinitly
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   375
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   376
     Returns:       a matching event or events (in case a collection of handlers has been passes)"
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   377
    
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   378
    | handlersArray handlerFinal eventsArray blocker |
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   379
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   380
    eventHandlers isNil ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   381
        "/ Asynchronous send...
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   382
        self assert:timeout isNil.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   383
        block value.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   384
        ^ nil
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   385
    ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   386
    "/ Synchronous send...
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   387
    self assert:Processor activeProcess ~~ connection eventDispatchProcess
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   388
        message:'Cannot send commands from within event dispatching process. Would deadlock'.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   389
    eventHandlers isCollection 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   390
        ifTrue:[ handlersArray := eventHandlers ]
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   391
        ifFalse:[ handlersArray := Array with:eventHandlers ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   392
    eventsArray := Array new:handlersArray size.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   393
    1 to:handlersArray size do:[:i | 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   394
        | handler |
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   395
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   396
        handler := handlersArray at:i.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   397
        handlersArray at:i
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   398
            put:[:event | 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   399
                | matches |
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   400
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   401
                matches := handler isBlock ifTrue:[ handler value:event ] ifFalse:[ event isKindOf:handler ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   402
                (matches and:[ i == 1 or:[ (eventsArray at:i - 1) notNil ] ]) ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   403
                    eventsArray at:i put:event.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   404
                    self announcer unsubscribe:(handlersArray at:i).
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   405
                    i == handlersArray size ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   406
                        connection eventAnnouncerInternal when: GDBEventSetProcessingFinished do: handlerFinal.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   407
                    ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   408
                ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   409
            ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   410
        self announcer when:GDBEvent do:(handlersArray at:i).
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   411
    ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   412
    handlerFinal := [ :event | connection eventAnnouncerInternal unsubscribe: handlerFinal. blocker signal ].  
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   413
    blocker := Semaphore new.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   414
    block value.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   415
    [
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   416
        (blocker waitWithTimeoutMs:timeout) isNil ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   417
            eventsArray := nil.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   418
        ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   419
    ] ensure:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   420
        handlersArray do:[:handler | 
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   421
            handler notNil ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   422
                self announcer unsubscribe:handler
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   423
            ]
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   424
        ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   425
    ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   426
    eventsArray isNil ifTrue:[
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   427
        (TimeoutError newException)
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   428
            parameter:timeout;
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   429
            raise.
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   430
    ].
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   431
    ^ eventHandlers isCollection ifTrue:[ eventsArray ] ifFalse:[ eventsArray first ]
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   432
ed6b45e838b7 To fold
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 56
diff changeset
   433
    "Created: / 08-03-2015 / 07:28:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   434
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   435
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   436
!GDBDebugger methodsFor:'event handling'!
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   437
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   438
onBreakpointCreatedEvent: aGDBBreakpointCreatedEvent
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   439
    | breakpoint |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   440
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   441
    breakpoints isNil ifTrue:[ 
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   442
        breakpoints := List new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   443
    ].
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   444
    breakpoint := aGDBBreakpointCreatedEvent breakpoint.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   445
    breakpoint setDebugger: self.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   446
    breakpoints add: breakpoint.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   447
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   448
    "Created: / 06-07-2017 / 16:08:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   449
    "Modified: / 07-07-2017 / 12:39:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   450
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   451
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   452
onBreakpointDeletedEvent: aGDBBreakpointDeletedEvent
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   453
    | breakpoint |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   454
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   455
    breakpoint := breakpoints detect:[:e | e number == aGDBBreakpointDeletedEvent id ].
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   456
    breakpoint setDebugger: nil.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   457
    breakpoints remove: breakpoint.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   458
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   459
    "Created: / 06-07-2017 / 16:26:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   460
    "Modified: / 07-07-2017 / 12:39:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   461
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   462
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   463
onBreakpointModifiedEvent: aGDBBreakpointModifiedEvent
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   464
    | old new |
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   465
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   466
    new := aGDBBreakpointModifiedEvent breakpoint.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   467
    old := breakpoints detect:[:e | e number == new number ].
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   468
    old updateFrom: new.
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   469
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   470
    "Created: / 06-07-2017 / 16:28:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   471
    "Modified: / 07-07-2017 / 12:30:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   472
!
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   473
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   474
onCommandEvent:aGDBCommandEvent 
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   475
    connection send:aGDBCommandEvent command.
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   476
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   477
    "Created: / 02-06-2014 / 23:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   478
    "Modified: / 20-06-2014 / 22:09:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   479
!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   480
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   481
onExitEvent:aGDBExitEvent 
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   482
    self release.
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   483
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   484
    "Created: / 03-06-2014 / 00:36:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9
5cc8797f6523 Make simple example with -gdb-exit command working
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8
diff changeset
   485
    "Modified: / 04-06-2014 / 09:28:59 / 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: 25
diff changeset
   486
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   487
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   488
onRunningEvent: aGDBRunningEvent
38
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   489
    | threads threadId |
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   490
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   491
    self nextInferiorStateSequnceNumber.        
38
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   492
    threadId := aGDBRunningEvent threadId.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   493
    threadId = 'all' ifFalse:[ 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   494
        threadId := threadId asInteger.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   495
    ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   496
    threads := Set new.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   497
    inferiors do:[:inferior | 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   498
        inferior threads do:[:thread | 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   499
            (threadId isString or:[thread id = threadId]) ifTrue:[ 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   500
                threads add: thread.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   501
            ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   502
        ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   503
    ].
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   504
    aGDBRunningEvent setThreads: threads.
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   505
    threads do:[:thread | 
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   506
        thread onRunningEvent: aGDBRunningEvent.
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   507
    ].
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   508
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   509
    "Created: / 07-09-2014 / 23:34:05 / 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: 85
diff changeset
   510
    "Modified: / 12-07-2017 / 13:48:32 / 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
   511
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   512
38
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   513
onStoppedEvent: aGDBStoppedEvent
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   514
    | threads threadIds |
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   515
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   516
    self nextInferiorStateSequnceNumber.  
38
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   517
    threadIds := aGDBStoppedEvent stoppedThreadIds.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   518
    threadIds = 'all' ifFalse:[ 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   519
        threadIds := threadIds collect:[:e | e asInteger ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   520
    ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   521
    threads := Set new.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   522
    inferiors do:[:inferior | 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   523
        inferior threads do:[:thread | 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   524
            (threadIds isString or:[threadIds includes: thread id]) ifTrue:[ 
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   525
                threads add: thread.
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   526
            ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   527
        ].
c9eaa506824b More work on GDBThreadStatus
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 37
diff changeset
   528
    ].
86
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   529
    aGDBStoppedEvent setThreads: threads.
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   530
    threads do:[:thread | 
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   531
        thread onStoppedEvent: aGDBStoppedEvent.
7f53d51a0a65 Cache thread status and update it on `=stopped` and `=running` events
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 85
diff changeset
   532
    ].
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   533
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   534
    "Created: / 07-09-2014 / 23:34:12 / 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: 85
diff changeset
   535
    "Modified: / 12-07-2017 / 13:47:56 / 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
   536
!
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   537
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   538
onThreadCreatedEvent:aGDBThreadCreatedEvent 
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   539
    | inferior |
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   540
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   541
    inferior := self inferiorForId:aGDBThreadCreatedEvent threadGroupId.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   542
    inferior onThreadCreatedEvent:aGDBThreadCreatedEvent.
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   543
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   544
    "Created: / 07-09-2014 / 21:20:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   545
!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   546
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   547
onThreadExitedEvent:aGDBThreadExitedEvent 
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   548
    | inferior |
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   549
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   550
    self nextInferiorStateSequnceNumber.  
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   551
    inferior := self inferiorForId:aGDBThreadExitedEvent threadGroupId.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   552
    inferior onThreadExitedEvent:aGDBThreadExitedEvent.
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   553
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   554
    "Created: / 07-09-2014 / 21:20:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   555
    "Modified: / 18-03-2015 / 13:57:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   556
!
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   557
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   558
onThreadGroupAddedEvent:aGDBThreadGroupAddedEvent 
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   559
    | inferior |
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   560
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   561
    inferiors isNil ifTrue:[
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   562
        inferiors := List new.
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   563
    ].
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   564
    inferior := GDBThreadGroup newWithDebugger:self
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   565
            id:aGDBThreadGroupAddedEvent threadGroupId.
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   566
    inferiors add:inferior.
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   567
    aGDBThreadGroupAddedEvent setThreadGroup:inferior
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   568
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   569
    "Modified: / 07-09-2014 / 21:18:54 / 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: 25
diff changeset
   570
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   571
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   572
onThreadGroupExitedEvent:aGDBThreadGroupExitedEvent 
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   573
    | inferior |
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   574
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   575
    self nextInferiorStateSequnceNumber.        
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   576
    inferior := self inferiorForId:aGDBThreadGroupExitedEvent threadGroupId.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   577
    inferior setExitCode:aGDBThreadGroupExitedEvent exitCode.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   578
    aGDBThreadGroupExitedEvent setThreadGroup:inferior
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   579
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   580
    "Created: / 06-09-2014 / 02:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
72
eb4eea3ebf4c Increate sequence number also when thread or thread group is stopped
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 69
diff changeset
   581
    "Modified: / 18-03-2015 / 13:57:44 / 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: 25
diff changeset
   582
!
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   583
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   584
onThreadGroupStartedEvent:aGDBThreadGroupStartedEvent 
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   585
    | inferior |
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   586
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   587
    inferior := self inferiorForId:aGDBThreadGroupStartedEvent threadGroupId.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   588
    inferior setPid:aGDBThreadGroupStartedEvent pid.
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   589
    aGDBThreadGroupStartedEvent setThreadGroup:inferior
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   590
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   591
    "Created: / 06-09-2014 / 02:37: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
   592
    "Modified: / 07-09-2014 / 21:23:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   593
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   594
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   595
!GDBDebugger methodsFor:'finalization'!
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   596
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   597
finalize
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   598
    self release.
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   599
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   600
    "Created: / 26-05-2014 / 21:23:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   601
! !
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   602
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   603
!GDBDebugger methodsFor:'initialize & release'!
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   604
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   605
initializeWithProcess: aGDBProcess
1
da21f8614c2d Fixes in GDBLauncher
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 0
diff changeset
   606
    self registerForFinalization.
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   607
    connection := GDBConnection newWithProcess: aGDBProcess.
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   608
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   609
    commandSequenceNumber := 0.
19
c48d33e27d34 Added internal announcer.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12
diff changeset
   610
    inferiorStateSequenceNumber := 0.
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   611
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   612
    self subscribe.        
8
7f4882e2562a More work on basic example. GDB exiting not yet working.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7
diff changeset
   613
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   614
    connection eventPumpStart.
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   615
    connection eventDispatchStart.
25
58e042a191a9 More work on GDB session recorder.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   616
    Delay waitForMilliseconds:100.  
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   617
12
568a2971c977 Generated classes for MI commands.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 11
diff changeset
   618
"/    self send: (GDBMICommand inferiorTtySet: driver inferiorPTY name).
48
330aa6df3dfb Set target-async option to allow asynchronous communication with GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   619
    self send: (GDBMI_inferior_tty_set arguments: { connection inferiorPTY name }).
330aa6df3dfb Set target-async option to allow asynchronous communication with GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 46
diff changeset
   620
    self send: (GDBMI_gdb_set arguments: #('target-async' 'on')).
11
474fbb650afe PTY support refactored to use GDBPTY object.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10
diff changeset
   621
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   622
    prettyPrintingEnabled := false.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   623
    frameFiltersEnabled := false.
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   624
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   625
    "Created: / 20-06-2014 / 21:45:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   626
    "Modified: / 12-06-2017 / 09:49:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   627
!
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   628
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   629
release
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   630
    connection notNil ifTrue:[ 
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   631
        self unsubscribe.
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   632
        connection release.
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   633
        connection := nil.
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   634
    ].
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   635
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   636
    "Created: / 26-05-2014 / 21:24:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   637
    "Modified: / 20-06-2014 / 22:08:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   638
!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   639
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   640
subscribe
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   641
    connection eventAnnouncerInternal
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   642
        when: GDBCommandEvent               send: #onCommandEvent:           to: self;
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   643
        when: GDBExitEvent                  send: #onExitEvent:              to: self;
35
c17ecf90e446 Initial support for thread groups, threads and breakpoints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 25
diff changeset
   644
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   645
        when: GDBThreadGroupAddedEvent      send: #onThreadGroupAddedEvent:  to: self;
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   646
        when: GDBThreadGroupStartedEvent    send: #onThreadGroupStartedEvent: to: self;
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   647
        when: GDBThreadGroupExitedEvent     send: #onThreadGroupExitedEvent: to: self;
36
095c4b0b74d3 Added support for threads.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 35
diff changeset
   648
37
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   649
        when: GDBThreadCreatedEvent         send: #onThreadCreatedEvent:      to: self;
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   650
        when: GDBThreadExitedEvent          send: #onThreadExitedEvent:       to: self;
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   651
a85f0c91f164 Some more work on threads (thread status)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 36
diff changeset
   652
        when: GDBRunningEvent               send: #onRunningEvent:            to: self;
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   653
        when: GDBStoppedEvent               send: #onStoppedEvent:            to: self;
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   654
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   655
        when: GDBBreakpointCreatedEvent     send: #onBreakpointCreatedEvent:  to: self;
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   656
        when: GDBBreakpointModifiedEvent    send: #onBreakpointModifiedEvent: to: self;
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   657
        when: GDBBreakpointDeletedEvent     send: #onBreakpointDeletedEvent:  to: self.
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   658
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   659
    "Created: / 20-06-2014 / 22:07:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
87
50e80d25ea6f Added initial support for breakppints.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 86
diff changeset
   660
    "Modified: / 06-07-2017 / 16:08:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   661
!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   662
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   663
unsubscribe
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   664
    connection eventAnnouncerInternal unsubscribe: self
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   665
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   666
    "Created: / 20-06-2014 / 22:07:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   667
! !
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   668
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   669
!GDBDebugger methodsFor:'testing'!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   670
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   671
isConnected
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   672
    ^ connection notNil
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   673
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 21
diff changeset
   674
    "Created: / 20-06-2014 / 22:12:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
82
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   675
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   676
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   677
isFrameFiltersEnabled
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   678
    ^ frameFiltersEnabled
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   679
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   680
    "Created: / 12-06-2017 / 09:41:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   681
!
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   682
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   683
isPrettyPrintingEnabled
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   684
    ^ prettyPrintingEnabled
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   685
7ee72b7a498f Added #enablePrettyPrinting and #enableFrameFilters to allow Python scripts to augment presentation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 80
diff changeset
   686
    "Created: / 12-06-2017 / 09:40:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   687
! !
0b9e93821620 First shot (merely backup)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   688
21
83395ca8b257 Renamed GDB to GDBDebugger
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 19
diff changeset
   689
!GDBDebugger class methodsFor:'documentation'!
7
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   690
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   691
version_HG
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   692
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   693
    ^ '$Changeset: <not expanded> $'
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   694
! !
7a51f98e7162 Initial implementation of event dispatcher and event pump.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   695