我正在使用GDB机器接口来调试从stdin读取并写入sdtout的二进制文件。我想将标准输入和标准输出重定向到文件。使用普通的 GDB,我可以使用这样的运行命令:
run < input.txt > output.txt
有没有办法像这样使用 GDB/MI 命令 -exec-run ?
这是类似的问题 GDB/MI 检测目标等待输入,但与普通的 gdb 解决方案相比,它似乎很复杂。
我在文档中也没有找到任何东西:ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_chapter/gdb_22.html#SEC216
你应该能够使用 mi 命令 -inferior-tty-set以及 MKFIFO 实用程序。
我找到了解决方案。可以将 MI GDB 命令与 GDB 命令一起使用。因此,如果我需要将 stdin 和 stdout 转发到文件,我可以这样做:
-
-file-exec-and-symbols <filename>
//readfile 进行调试 -
-break-insert main
//在主函数(或其他任何地方(设置断点 -
run < input.txt > output.txt
//将标准输入和标准输出转发到文件 -
-exec-run
//开始调试
在此之后,您可以像往常一样运行诸如step或-exec-step之类的命令。