Introduced GDBProcess - a class encapsulating gdb OS process.
"{ Package: 'jv:libgdbs' }"
GDBProcess subclass:#GDBUnixProcess
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'GDB-Private'
!
!GDBUnixProcess class methodsFor:'instance creation'!
new
"return an initialized instance"
^ self basicNew initialize.
! !
!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>"
! !