gdb远程调试c ++进程通过ssh启动:如何重定向stdin

时间:2014-01-07 19:47:00

标签: linux ssh gdbserver

首先,一些背景知识。我使用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

有什么东西可以解决这个问题吗?

1 个答案:

答案 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连接不会被加密。