所以我正在尝试调试一个需要用户通过终端输入一些文本的程序:
$ echo 'here is the text' | ./program
如何在 GDB 中模拟该输入?
您可以使用重定向的输入来运行程序:
echo 'here is the text' > intput.txt
gdb ./program
(gdb) run < intput.txt
您还可以使用
<<<
运算符,而无需将字符串写入文件的额外步骤:
(gdb) r <<< $(echo 'here is the text')
或
(gdb) r <<< `echo 'here is the text'`
来自
man
的bash
页面:
这里是字符串
此处文档的变体,格式为:
[n]<<
该单词会经历波形符扩展、参数和变量扩展、命令替换、算术扩展和引号删除。 不执行路径名扩展和分词。 结果作为单个字符串提供, 附加换行符到其标准输入上的命令(或文件描述符 n,如果指定了 n)。
您可以使用
--args
选项提供程序可执行文件,后跟如下参数,
% gdb --args ./program arg1 arg2