GDBUnixProcess.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 26 May 2017 08:05:28 +0100
changeset 78 c24e7d8bc881
parent 58 531c7f5d6558
child 79 303c4edc75ad
permissions -rw-r--r--
BUpdated build files.

"{ Package: 'jv:libgdbs' }"

"{ NameSpace: Smalltalk }"

GDBProcess subclass:#GDBUnixProcess
	instanceVariableNames:''
	classVariableNames:'GDBExecutable'
	poolDictionaries:''
	category:'GDB-Private'
!


!GDBUnixProcess class methodsFor:'accessing'!

gdbExecutable
    ^ GDBExecutable

    "Created: / 01-03-2015 / 08:07:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

gdbExecutable: aString
    GDBExecutable := aString

    "Created: / 01-03-2015 / 08:07:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GDBUnixProcess methodsFor:'initialization'!

initialize
    | inputPipe  input  outputPipe  output  args |

    inputPipe := NonPositionableExternalStream makePipe.
    input := inputPipe second.
    outputPipe := NonPositionableExternalStream makePipe.
    output := outputPipe first.
    args := { GDBExecutable ? '/usr/bin/gdb' . '-q' . '-nx' . '--interpreter' . 'mi2' }.
    Processor 
        monitor:[
            pid := OperatingSystem 
                    exec:args first
                    withArguments:args
                    environment:OperatingSystem getEnvironment
                    fileDescriptors:{
                            inputPipe first fileDescriptor.
                            outputPipe second fileDescriptor.
                            outputPipe second fileDescriptor
                        }
                    fork:true
                    newPgrp:false
                    inDirectory:Filename currentDirectory.
            debuggerInput := input.
            debuggerOutput := output.
            pid.
        ]
        action:[:stat | self exited:stat. ].
    inputPipe first close.
    outputPipe second close.
    pid isNil ifTrue:[
        input close.
        output close.
        self error:'Failed to launch gdb'.
    ].

    "Modified: / 01-03-2015 / 08:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!GDBUnixProcess class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !