我希望在GDB(在Docker中运行)中调试的二进制文件的输入/输出(tty)作为NodeJS流。
GDB 可以使用 tty <tty>
命令将其输出和二进制文件的输出分开。我想与此 TTY 交互,但它位于 Docker 容器中。有没有办法暴露TTY?
到目前为止,我已经尝试chvt
从容器执行(通过 Dockerode)并读取输出流,但它不起作用。
在容器中运行 GDB gdb -i=mi --tty=<some tty>
我想使用例如执行以下命令附加:
let exec:Exec = await container.exec({
AttachStdin: true,
AttachStdout: true,
AttachStderr: true,
Cmd: ['chvt', '69'],
Tty: true
});
let execProc = await exec.start({Tty: true});
let sock = execProc.output.connection;
sock.pipe(<somewhere>); //tty of binary running in GDB can be interacted via pipe
let containerExecStream = async (container: Container,cmd: string[]) => {
let exec = await container.exec({
AttachStdin: true,
AttachStdout: true,
AttachStderr: true,
Tty: true,
Cmd:['bash', '-c', 'socat pty,raw,echo=0,link=/dev/gdbout,waitslave -']});
let out = await exec.start({Tty: true});
return <Socket>out.output.connection;
}