我想编写与GDB交互的测试,但我有麻烦捕获它的输出。 我想对于要生成一个日志文件,它看起来像什么会在终端被视为已测试是手工执行。 GDB被证明是非常顽固,当谈到然而捕捉它的输出。
我已经能够编写Expect脚本,其能够与GDB,其输出可以被重定向到一个日志文件,但我不想写我在TCL的测试进行交互。 我希望能使用Groovy,这是与Java兼容。 出于某种原因,Perl的期待和ExpectJ程序的输出始终转到终端,不能被重定向到一个文件中。
我尝试使用的ProcessBuilder开始从Java GDB的过程,它大部分的作品,但打印报表的输出永远不会出现在标准输出,并且不能被捕获。 我想,如果期待的作品,那么我发动从Java期望,并将它与GDB交互,但是在这种情况下,大多数程序输出的损失,从来没有出现在创建过程的标准输出。
所以我的问题是,我怎么能写在Groovy测试(Java的将被罚款以及)与GDB交互,可以捕捉所有的输出?
伪代码:
process = "gdb -q".execute()
waitForPrompt()
send("file exec")
waitForPrompt()
send("run")
send("quit")
日志文件:
(gdb) file exec
Reading symbols from exec...done.
(gdb) run
Starting program: exec
<... output ...>
Program exited normally.
(gdb) quit