2014-01-07 66 views
1

首先是一些背景知識。我通過使用ssh一個remote_host開始的處理運行的程序:gdb遠程調試C++進程通過ssh啓動:如何重定向stdin

ssh -T remote_host "cd ~/mydir && ~/myprogram" < input.txt 

所述的程序,myprogram,讀取標準輸入,其被附連到本地文件input.txt

現在,我需要在gdb下遠程調試這個程序。如果沒有標準輸入重定向,即< input.txt,我能做到這一點使用gdb的target remote,這樣的事情(在gdb的提示):

(gdb) target remote | ssh -T remote_host gdbserver - myprogram 

然而,在上面的例子中,我不知道如何將myprogram的stdin附加到input.txt

有什麼可以做的伎倆?

回答

0

gdbserver不會從標準輸入讀取,所以它調用的程序將無限制地訪問標準輸入。你應該可以這樣做:

ssh -T remote_host "cd ~/mydir && gdbserver :1234 ~/myprogram" < input.txt 

其中1234是一個未使用的端口。然後,

(gdb) target remote remote_host:1234 

一個缺點是,gdb-gdbserver TCP連接將不會被加密。

相關問題