GDBProcess.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 08 Sep 2023 12:40:22 +0100
changeset 317 7f63737e0374
parent 291 685992d59efd
permissions -rw-r--r--
Fix `GDBMIDebugger` after rename of `GDBStXUnixProcess` to `GDBUnixProcess` ...in commit d1422e1ee.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
     1
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
263
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
     4
Copyright (C) 2022-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
     5
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
     6
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
     7
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
     8
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
     9
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    10
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    11
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    12
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    13
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    14
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    15
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    16
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    19
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    21
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    22
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    23
"
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ Package: 'jv:libgdbs' }"
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
78
c24e7d8bc881 BUpdated build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    26
"{ NameSpace: Smalltalk }"
c24e7d8bc881 BUpdated build files.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 24
diff changeset
    27
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
Object subclass:#GDBProcess
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    29
	instanceVariableNames:'connection debuggerInput debuggerOutput'
291
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
    30
	classVariableNames:'GDBCommand'
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	poolDictionaries:''
272
cdd1c9ad00de Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents: 268
diff changeset
    32
	category:'GDB-Internal'
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    35
!GDBProcess class methodsFor:'documentation'!
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    36
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    37
copyright
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    38
"
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    39
jv:libgdbs - GNU Debugger Interface Library
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    40
Copyright (C) 2015-now Jan Vrany
263
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
    41
Copyright (C) 2022-2023 LabWare
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    42
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    43
Permission is hereby granted, free of charge, to any person obtaining a copy
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    44
of this software and associated documentation files (the 'Software'), to deal
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    45
in the Software without restriction, including without limitation the rights
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    46
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    47
copies of the Software, and to permit persons to whom the Software is
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    48
furnished to do so, subject to the following conditions:
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    49
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    50
The above copyright notice and this permission notice shall be included in all
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    51
copies or substantial portions of the Software.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    52
259
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    53
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    54
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    55
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    56
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    57
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    58
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
651864c2aa29 Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 195
diff changeset
    59
SOFTWARE.
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    60
"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    61
!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    62
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    63
documentation
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    64
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    65
    GDBProcess is represents a running GDB and provides access
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    66
    to MI and CLI channels (see #debuggerIput / #debuggerOutput).
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    67
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    68
    [author:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    69
        Jan Vrany <jan.vrany@fit.cvut.cz>
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    70
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    71
    [instance variables:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    72
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    73
    [class variables:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    74
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    75
    [see also:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    76
        GDBStXUnixProcess
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    77
        GDBStXWindowsProcess
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    78
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    79
"
91
472a4841a8b6 License this package under 'GNU Lesser General Public License'
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 79
diff changeset
    80
! !
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
    81
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    82
!GDBProcess class methodsFor:'instance creation'!
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    83
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    84
new
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    85
    self == GDBProcess ifTrue:[
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
    86
        ^ GDBLocalProcess newWithCommand: nil  
163
f882d9048b54 Renamed `GDBStXWindowsProcess` to `GDBStXSimpleProcess`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 153
diff changeset
    87
    ] ifFalse:[
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    88
        ^ super new.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    89
    ].
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    90
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 93
diff changeset
    91
    "
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
    92
     GDBProcess new release."
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
    93
95
f417138e9c48 Win32: initial support for Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 93
diff changeset
    94
    "Modified (comment): / 11-01-2018 / 23:02:11 / jv"
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
    95
    "Modified: / 12-12-2018 / 22:22:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    96
! !
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    97
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
    98
!GDBProcess class methodsFor:'accessing'!
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    99
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   100
gdbCommand
291
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   101
    GDBCommand notNil ifTrue: [ 
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   102
        ^ GDBCommand
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   103
    ] ifFalse: [
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   104
        ^ self gdbCommandDefault
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   105
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   106
    "
291
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   107
    GDBProcess gdbCommand
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   108
    GDBProcess gdbCommand: nil.
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   109
    GDBProcess gdbCommand: '/home/jv/Projects/gdb/users_jv_vdb/gdb/gdb'
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   110
    "
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   111
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   112
    "Created: / 13-12-2018 / 11:29:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   113
    "Modified: / 17-06-2019 / 14:21:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
291
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   114
    "Modified: / 31-07-2023 / 17:52:38 / Jan Vrany <jan.vrany@labware.com>"
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   115
!
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   116
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   117
gdbCommand: aString
291
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   118
    GDBCommand := aString
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   119
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   120
    "Created: / 13-12-2018 / 11:29:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
291
685992d59efd Compatibility: remove dependency on `UserPreferences`
Jan Vrany <jan.vrany@labware.com>
parents: 272
diff changeset
   121
    "Modified: / 31-07-2023 / 17:51:33 / Jan Vrany <jan.vrany@labware.com>"
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   122
!
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   123
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   124
gdbCommandDefault
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   125
    "Return default path to `gdb` command or nil if no
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   126
     suitable `gdb` executable is found"
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   127
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   128
    | exe |
149
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   129
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   130
    "/ On Windows, look for MSYS2 installation and
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   131
    "/ try to pick GDB matching current arch (i686
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   132
    "/ or x86_64) since on Windows, there's no GDB
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   133
    "/ supporting both targets :-(
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   134
    OperatingSystem isMSWINDOWSlike ifTrue:[ 
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   135
        ExternalAddress pointerSize == 8 ifTrue:[
263
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   136
            exe := 'C:\msys64\mingw64\bin\gdb-multiarch.exe'.
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   137
            exe asFilename exists ifTrue:[ ^ exe ].
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   138
            exe := 'C:\msys64\usr\bin\gdb-multiarch.exe'.
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   139
            exe asFilename exists ifTrue:[ ^ exe ].
149
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   140
            exe := 'C:\msys64\mingw64\bin\gdb.exe'.
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   141
            exe asFilename exists ifTrue:[ ^ exe ].
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   142
            exe := 'C:\msys64\usr\bin\gdb.exe'.
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   143
            exe asFilename exists ifTrue:[ ^ exe ].
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   144
        ] ifFalse:[
263
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   145
            exe := 'C:\msys64\mingw32\bin\gdb-multiarch.exe'.
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   146
            exe asFilename exists ifTrue:[ ^ exe ].
149
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   147
            exe := 'C:\msys64\mingw32\bin\gdb.exe'.
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   148
            exe asFilename exists ifTrue:[ ^ exe ].
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   149
        ]
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   150
    ].
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   151
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   152
    "/ Search for `gdb` along the PATH...
263
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   153
    exe := OperatingSystem pathOfCommand: 'gdb-multiarch'.
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   154
    exe notNil ifTrue:[ ^ exe ].   
149
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   155
    exe := OperatingSystem pathOfCommand: 'gdb'.
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   156
    exe notNil ifTrue:[ ^ exe ].   
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   157
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   158
    "/ Nothing found :-(
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   159
    ^ nil
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   160
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   161
    "
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   162
    GDBProcess  gdbCommand
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   163
    UserPreferences current gdbCommand: nil.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   164
    UserPreferences current gdbCommand: '/home/jv/Projects/gdb/users_jv_vdb/gdb/gdb'.
149
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   165
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   166
      
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   167
0db2ccc6da7b Refactor configuration and autodetection of gdb executable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 138
diff changeset
   168
    "
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   169
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   170
    "Created: / 17-06-2019 / 14:20:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
263
0c2ec1678b64 Prefer `gdb-multiarch` (if present) over `gdb`
Jan Vrany <jan.vrany@labware.com>
parents: 259
diff changeset
   171
    "Modified: / 16-05-2023 / 17:28:56 / Jan Vrany <jan.vrany@labware.com>"
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   172
!
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   173
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   174
gdbCommandParseAndValidate:command 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   175
    "Given a `command`, checks whether it is a valid gdb command.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   176
     Returns absolute path to gdb binary and global arguments (if any)
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   177
     or raise an GDBError if `command` is not valid hg command."
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   178
    
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   179
    | tokens  executable  executableAsFilename  arguments  version |
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 163
diff changeset
   180
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   181
    command isEmptyOrNil ifTrue:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   182
        GDBError 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   183
            raiseErrorString:('''gdb'' executable not configured and not found in standard places!!').
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   184
        ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   185
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   186
    command asFilename exists ifTrue:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   187
        executable := command.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   188
        arguments := #().
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   189
    ] ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   190
        tokens := GDBShellCommandParser parse:command.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   191
        executable := tokens first.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   192
        arguments := tokens copyFrom:2.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   193
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   194
    executableAsFilename := executable asFilename.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   195
    executableAsFilename isAbsolute ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   196
        executableAsFilename := executableAsFilename asAbsoluteFilename.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   197
        executableAsFilename exists ifTrue:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   198
            executable := executableAsFilename pathName.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   199
        ] ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   200
            "/ Also try to find specified command along PATH, maybe somebody
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   201
            "/ just typed 'gdb' in...
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   202
            executable := (OperatingSystem pathOfCommand:executable).
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   203
            executable isNil ifTrue:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   204
                GDBError 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   205
                    raiseErrorString:('''gdb'' executable (%1) not found!!' bindWith:command).
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   206
                ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   207
            ] ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   208
                executableAsFilename := executable asFilename.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   209
            ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   210
        ]
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   211
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   212
    executableAsFilename exists ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   213
        GDBError 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   214
            raiseErrorString:('Specified ''gdb'' executable (%1) does not exists!!' 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   215
                    bindWith:executable).
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   216
        ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   217
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   218
    executableAsFilename isDirectory ifTrue:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   219
        GDBError 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   220
            raiseErrorString:('Specified ''gdb'' executable (%1) is actually a directory!!' 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   221
                    bindWith:executable).
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   222
        ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   223
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   224
    executableAsFilename isExecutable ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   225
        GDBError 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   226
            raiseErrorString:('Specified ''gdb'' executable (%1) is cannot be executed!!' 
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   227
                    bindWith:executable).
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   228
        ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   229
    ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   230
     "
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   231
     [
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   232
     version := self gdbVersionOf: executable arguments: arguments.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   233
     ] on: Error do:[:ex |
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   234
     HGInvalidExecutableError newException
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   235
     parameter: ex;
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   236
     messageText: 'Failed to check version: ', ex description;
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   237
     raise.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   238
     ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   239
     ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   240
     (self gdbVersionIsSupported: version) ifFalse:[
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   241
     HGInvalidVersionError newException
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   242
     parameter: version;
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   243
     messageText: ('Unsuported Mercurial version (%1)' bindWith: ((version collect:[:e|e printString]) asStringWith:$.));
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   244
     raise.
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   245
     ^ nil
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   246
     ].
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   247
    "
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   248
    ^ (Array with:executable) , arguments
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   249
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   250
    "
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   251
     GDBProcess  gdbCommand
195
17a6f1d1cb22 Autodetect GDB data directory
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   252
     GDBProcess gdbCommandParseAndValidate: 'gdb'
17a6f1d1cb22 Autodetect GDB data directory
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   253
     GDBProcess gdbCommandParseAndValidate: 'gdb -q'
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   254
"
195
17a6f1d1cb22 Autodetect GDB data directory
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   255
193
2aa0074479d9 Add (utility) `GDBProcess >> gdbCommandParseAndValidate:`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 167
diff changeset
   256
    "Created: / 18-06-2019 / 10:26:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
195
17a6f1d1cb22 Autodetect GDB data directory
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 193
diff changeset
   257
    "Modified (comment): / 20-06-2019 / 11:06:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   258
! !
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   259
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
!GDBProcess class methodsFor:'queries'!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
isAbstract
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    "Return if this class is an abstract class.
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
     True is returned here for myself only; false for subclasses.
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
     Abstract subclasses must redefine again."
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
    ^ self == GDBProcess.
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
! !
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
!GDBProcess methodsFor:'accessing'!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
24
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   272
connection:aGDBConnection
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   273
    connection := aGDBConnection.
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   274
!
98ff50f8a25d Temporary commit : initial work on session recorder (to use for simulation later)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
   275
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   276
consoleInput
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   277
    "Return a write stream on debugger's CLI channel. CLI commands
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   278
     should be written here. If this process does not have a CLI
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   279
     channel opened, `nil` is returned. In this case, CLI must be
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   280
     emulated - if required. See `-interpreter-exec` MI command.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   281
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   282
     CLI channel is generally available only on Smalltalk/X and only
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   283
     on UNIX platform where this stream points to TTY."
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   284
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   285
    ^ nil
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   286
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   287
    "Created: / 02-06-2017 / 23:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   288
    "Modified: / 15-12-2017 / 23:58:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   289
    "Modified (comment): / 17-10-2018 / 22:20:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   290
!
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   291
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   292
consoleOutput
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   293
    "Return a read stream on debugger's CLI channel. CLI output
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   294
     should be read from. If this process does not have a CLI
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   295
     channel opened, `nil` is returned. In this case, CLI must be
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   296
     emulated - if required.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   297
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   298
     CLI channel is generally available only on Smalltalk/X and only
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   299
     on UNIX platform where this stream points to TTY."
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   300
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   301
    ^ nil
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   302
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   303
    "Created: / 02-06-2017 / 23:35:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   304
    "Modified: / 15-12-2017 / 23:58:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   305
    "Modified (comment): / 17-10-2018 / 22:21:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   306
!
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   307
23
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
debuggerInput
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   309
    "Return a write stream on debugger's MI channel. (MI) commands
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   310
     should be written there."
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   311
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   312
    ^ debuggerInput
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   313
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   314
    "Modified: / 15-12-2017 / 23:58:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   315
    "Modified (comment): / 17-10-2018 / 22:14:40 / 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:
diff changeset
   316
!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
debuggerOutput
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   319
    "Return read stream on debuugger's MI channel. Command responses
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   320
     and events should be read from here"
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   321
93
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   322
    ^ debuggerOutput
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   323
b1715ebf8df1 Resurected old `GDBProcess` implementation using pipes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 91
diff changeset
   324
    "Modified: / 15-12-2017 / 23:58:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   325
    "Modified (comment): / 17-10-2018 / 22:15:22 / 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:
diff changeset
   326
!
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   328
id
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   329
    "Return a string identification of this GDBProcess. 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   330
     Used for debugging purposes only."
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   331
116
ffd185f7a357 Fix: initialize debugger features early during initialization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   332
    ^ self subclassResponsibility
ffd185f7a357 Fix: initialize debugger features early during initialization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   333
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   334
    "Created: / 19-10-2018 / 10:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
116
ffd185f7a357 Fix: initialize debugger features early during initialization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   335
!
ffd185f7a357 Fix: initialize debugger features early during initialization
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 95
diff changeset
   336
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   337
nativeTargetFeatures    
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   338
    "Return default native target features. This is used when
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   339
     used GDB does not support =target-connected and =target-disconnected
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   340
     events."
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   341
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   342
    "/ Be conservative and  report no features at all...
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   343
    ^ #()
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   344
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   345
    "Created: / 09-04-2018 / 15:40:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 149
diff changeset
   346
    "Modified (comment): / 17-10-2018 / 22:12:20 / 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:
diff changeset
   347
! !
a7eb888c81b5 Introduced GDBProcess - a class encapsulating gdb OS process.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
167
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   349
!GDBProcess methodsFor:'queries'!
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   350
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   351
canUsePTY
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   352
    "Return true if PTYs can be used with this process, false otherwise"
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   353
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   354
    ^ false
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   355
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   356
    "Created: / 16-01-2019 / 23:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   357
! !
6da3d808c7cc Use inferior PTY only if supported
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 164
diff changeset
   358
79
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   359
!GDBProcess class methodsFor:'documentation'!
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   360
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   361
version_HG
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   362
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   363
    ^ '$Changeset: <not expanded> $'
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   364
! !
303c4edc75ad `GDBProcess` refatored to have console interpreter on STDIN/STDOUT
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 78
diff changeset
   365