GDBLocalProcess.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 28 Jan 2019 14:56:14 +0000
changeset 173 02546d4fbe6d
parent 164 a16705f64a64
child 185 4e1be69b39ce
permissions -rw-r--r--
Fix frame of `GDBThreadSelectedEvent` if inferior is running When ifnferior is running at time we get `=thread-selected` event, we should at least make that frame kind of usable by fixing up it's debugger and thread. This allow clients to use (to some extent) event's frame without worring (too much) about these details.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
This library is free software; you can redistribute it and/or
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
License as published by the Free Software Foundation; either
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
version 2.1 of the License. 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
This library is distributed in the hope that it will be useful,
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
Lesser General Public License for more details.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
License along with this library; if not, write to the Free Software
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs' }"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ NameSpace: Smalltalk }"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
GDBProcess subclass:#GDBLocalProcess
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:'pid'
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
	classVariableNames:''
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'GDB-Private'
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!GDBLocalProcess class methodsFor:'documentation'!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
copyright
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
jv:libgdbs - GNU Debugger Interface Library
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
Copyright (C) 2015-now Jan Vrany
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
This library is free software; you can redistribute it and/or
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
modify it under the terms of the GNU Lesser General Public
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
License as published by the Free Software Foundation; either
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
version 2.1 of the License. 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
This library is distributed in the hope that it will be useful,
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
but WITHOUT ANY WARRANTY; without even the implied warranty of
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
Lesser General Public License for more details.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
You should have received a copy of the GNU Lesser General Public
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
License along with this library; if not, write to the Free Software
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
documentation
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    GDBLocalProcess is a specialization of GDBProcess that spawns a
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    local GDB process on a host machine. Spawning a running of GDB
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
    process is ully managed by an (sub)instance of `GDBLocalProcess`
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
    Due to platform differences, there are concrete variants for 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    different platforms.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
    [author:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
        Jan Vrany <jan.vrany@fit.cvut.cz>
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
    [instance variables:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    [class variables:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    [see also:]
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
        GDBStXUnixProcess
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
        GDBStXWindowsProcess
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
        GDBRemoteProcess
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
! !
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    76
!GDBLocalProcess class methodsFor:'instance creation'!
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    77
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    78
newWithCommand: command
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    79
    "Return a new local GDBLocalProcess suitable for this platform 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    80
     using `command` to launch GDB.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    81
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    82
     If `command` is nil, default configured command is used
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    83
     (See GDBProcess class >> gdbExecutable)
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    84
    "
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    85
    self == GDBLocalProcess ifTrue:[
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    86
        Smalltalk isSmalltalkX ifTrue:[
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    87
            OperatingSystem isUNIXlike ifTrue:[
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    88
                ^ GDBStXUnixProcess basicNew initializeWithCommand: command
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    89
            ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    90
            ^ GDBStXSimpleProcess basicNew initializeWithCommand: command
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    91
        ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    92
    ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    93
    ^ self basicNew initializeWithCommand: command
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    94
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    95
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    96
    "
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    97
     GDBProcess new release."
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    98
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
    99
    "Created: / 12-12-2018 / 22:19:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   100
! !
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   101
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
!GDBLocalProcess methodsFor:'accessing'!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
id
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    "Return a string identification of this GDBProcess. 
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
     Used for debugging purposes only."
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    ^ pid
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    "Created: / 19-10-2018 / 10:09:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    "Modified: / 20-10-2018 / 06:53:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
! !
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
!GDBLocalProcess methodsFor:'initialization & release'!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   116
initialize
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   117
    "Initializes itself using default gdb command"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   118
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   119
    self initializeWithCommand: nil
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   120
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   121
    "Created: / 12-12-2018 / 20:11:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   122
    "Modified: / 12-12-2018 / 22:17:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   123
!
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   124
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   125
initializeWithCommand: command
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   126
    "Initializes itself using `command` string to launch GDB. 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   127
     If `command` is nil, default configured command is used
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   128
     (See GDBProcess class >> gdbExecutable)"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   129
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   130
    self subclassResponsibility
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   131
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   132
    "Created: / 12-12-2018 / 20:11:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   133
    "Modified (comment): / 12-12-2018 / 22:18:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   134
!
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   135
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
release
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    (pid notNil and:[pid > 1]) ifTrue:[
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
        OperatingSystem sendSignal:(OperatingSystem sigTERM) to: pid.       
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    ].
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    "Created: / 20-10-2018 / 07:12:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
! !
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
!GDBLocalProcess methodsFor:'private'!
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
164
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   146
command2argv: commandOrNil
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   147
    "Parse given `commandOrNil` string and return an array of tokens
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   148
     suitable for passing back to `exec()` family of functions.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   149
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   150
     If `commandOrNil` is `nil`, then use default GDB command.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   151
     On error, thrown GDBError.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   152
    "
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   153
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   154
    | command argv exe |
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   155
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   156
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   157
    commandOrNil isNil ifTrue:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   158
        command := self class gdbCommand.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   159
        command isEmptyOrNil ifTrue:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   160
            GDBError signal: 'GDB not found. Please set GDB command - `UserPreferences current gdbCommand:''...''`'.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   161
            ^ nil.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   162
        ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   163
    ] ifFalse:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   164
        command := commandOrNil.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   165
        command isEmpty ifTrue:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   166
            GDBError signal: 'Command is empty'.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   167
            ^ nil.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   168
        ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   169
    ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   170
    argv := GDBShellCommandParser parse: command.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   171
    exe := argv first.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   172
    exe asFilename exists ifFalse:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   173
        "/ Try to find executable a long PATH, just as shell 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   174
        "/ would do...
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   175
        exe := OperatingSystem pathOfCommand: exe.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   176
        exe notNil ifTrue:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   177
            argv at:1 put: exe.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   178
        ] ifFalse:[
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   179
            GDBError signal: 'Command not found: ', argv first.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   180
            ^ nil
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   181
        ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   182
    ] ifTrue:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   183
        "/ `exe` points to real file (or directory...), so
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   184
        "/ check here...
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   185
        exe := exe asFilename.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   186
        exe isExecutable ifTrue:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   187
            argv at:1 put: exe asAbsoluteFilename pathName.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   188
        ] ifFalse:[ 
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   189
            GDBError signal: 'Command not executable: ', argv first.
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   190
            ^ nil
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   191
        ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   192
    ].
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   193
    ^ argv
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   194
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   195
    "Created: / 17-12-2018 / 10:48:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   196
!
a16705f64a64 Add support for arbitrary (shell) command to launch GDB.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 152
diff changeset
   197
152
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
exited: status
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    "Called when spawn GDB process terminates for whatever reason"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
    pid := nil.
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
    connection released: status
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    "Created: / 20-06-2014 / 21:35:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
    "Modified: / 12-01-2018 / 21:50:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
    "Modified (comment): / 17-10-2018 / 22:30:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
! !
fab425b52c21 Refactor `GDBProcess` hierarchy to improve portability
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207