GDBUnixProcess.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 23 Jun 2014 09:45:16 +0100
changeset 24 98ff50f8a25d
parent 23 a7eb888c81b5
child 25 58e042a191a9
permissions -rw-r--r--
Temporary commit : initial work on session recorder (to use for simulation later)

"{ Package: 'jv:libgdbs' }"

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

!GDBUnixProcess methodsFor:'initialization'!

initialize
    | inputPipe  input  outputPipe  output  args |

    inputPipe := NonPositionableExternalStream makePipe.
    input := inputPipe second.
    outputPipe := NonPositionableExternalStream makePipe.
    output := outputPipe first.
    args := #( '/usr/bin/gdb' '--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: / 20-06-2014 / 21:35:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !