如何加载程序读取标准input和参数在gdb中?

我有一个程序,从标准inputinput,也从命令行采取一些参数。 它看起来像这样:

cat input.txt > myprogram -path "/home/user/work" 

我尝试用gdb在emacs里面debugging代码,通过Mx gdb,我尝试用下面的命令加载程序:

 gdb cat input.txt > myprogram -path "/home/user/work" 

但是,gdb不喜欢它。

问题从这里 cri手</s>脚。 不幸的是,我不明白的解决scheme,不知道除了用-g选项编译和运行命令MX GDB之外该怎么办。

如果你是用shell做的话,你可以这样做:

 % gdb myprogram gdb> run params ... < input.txt 

这似乎也在emacs中工作。

有几种方法可以做到这一点:

 $ gdb myprogram (gdb) r -path /home/user/work < input.txt 

要么

 $ gdb myprogram (gdb) set args -path /home/user/work < input.txt (gdb) r 

要么

 $ gdb -ex 'set args -path /home/user/work < input.txt' myprogram (gdb) r 

其中gdb run命令( r )默认使用前面set args

为了完整起见,在开始一个debugging会话时还有–args选项。 即)

 gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3 

如果您不需要从一开始就进行debugging,则还可以使用以下命令附加到正在运行的进程:

 $ gdb myprogram xxx 

其中xxx是进程ID。 那么你不需要告诉gdb开始的参数。