首先,一些背景知识。我使用remote_host
ssh
上启动流程来运行程序
ssh -T remote_host "cd ~/mydir && ~/myprogram" < input.txt
程序myprogram
读取stdin,它附加到本地文件input.txt
。
现在,我需要在gdb下远程调试这个程序。如果没有stdin重定向,即< input.txt
,我可以使用gdb的target remote
执行此操作,类似这样(在gdb提示符下):
(gdb) target remote | ssh -T remote_host gdbserver - myprogram
但是,在上面的示例中,我不知道如何将myprogram
的stdin附加到input.txt
。
有什么东西可以解决这个问题吗?
答案 0 :(得分:0)
gdbserver
不从stdin读取,因此它调用的程序将无限制地访问stdin。你应该能够做到这一点:
ssh -T remote_host "cd ~/mydir && gdbserver :1234 ~/myprogram" < input.txt
其中1234
是未使用的端口。然后,
(gdb) target remote remote_host:1234
这样做的一个缺点是gdb-gdbserver
TCP连接不会被加密。