vin*_*456 95 emacs redirect gdb command-line-arguments
我有一个程序从stdin获取输入,并从命令行获取一些参数.它看起来像这样:
Run Code Online (Sandbox Code Playgroud)cat input.txt > myprogram -path "/home/user/work"
我尝试使用gcs在emacs中调试代码,通过Mx gdb,我尝试使用以下命令加载程序:
Run Code Online (Sandbox Code Playgroud)gdb cat input.txt > myprogram -path "/home/user/work"
但是,gdb不喜欢它.
问题来自这里.不幸的是我不理解解决方案,并且不确定除了使用该-g
选项进行编译并运行命令Mx gdb 之外还要做什么.
Aln*_*tak 122
如果你是从shell做的,你会这样做:
% gdb myprogram
gdb> run params ... < input.txt
Run Code Online (Sandbox Code Playgroud)
这似乎也适用于emacs.
max*_*zig 28
有几种方法可以做到:
$ gdb myprogram
(gdb) r -path /home/user/work < input.txt
Run Code Online (Sandbox Code Playgroud)
要么
$ gdb myprogram
(gdb) set args -path /home/user/work < input.txt
(gdb) r
Run Code Online (Sandbox Code Playgroud)
要么
$ gdb -ex 'set args -path /home/user/work < input.txt' myprogram
(gdb) r
Run Code Online (Sandbox Code Playgroud)
其中gdb run
命令(r
)默认使用先前设置的参数set args
.
十一年后了,这个问题已经有了答案,但对于未来像我这样的人,我只是想补充一些东西。
运行后gdb your_program
,如果您只输入run < file_containing_input
,程序将一直运行到最后,您可能无法发现问题,因此在执行之前请先run < file_containing_input
休息一下。像这样的东西
$ gdb your_program
gdb> break main
gdb> run < file_containing_input
Run Code Online (Sandbox Code Playgroud)
为了完整起见,启动调试会话时还有--args选项.即)
gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
Run Code Online (Sandbox Code Playgroud)