我正在编写一个与GDB交互的脚本,需要GDB认为它已连接到终端。我在网上找到了一些可用于执行此操作的C函数的参考,但我的程序是用Groovy(Java)编写的,我想避免使用JNI接口。我认为更好的方法是使用expect。
作为剧本:
#!/usr/bin/env expect
eval spawn $argv
interact
从我的脚本运行时:
"expect -c 'eval spawn " + cmd + "; interact'".execute()
这些脚本的问题是期望永远不会终止。我希望我的期望包装器是通用的,所以我不想陷入特定的单词。我也不想使用GDB / MI接口,因为我想生成一个GDB会话的日志,看起来就像你从终端看到的那样。如何让我的期望包装器正确终止?我是否需要担心提供的命令中的引号,或者是否足够聪明地产生以确定带有空格的列表中的项仍然是一个参数?
答案 0 :(得分:0)
您写道,您不想使用JNI。您考虑过使用JNA吗?到目前为止我从未使用它,但描述看起来很有希望。
答案 1 :(得分:0)
这有点像kludge,但也许你可以在gdb
内运行script
。
答案 2 :(得分:0)
放弃并使用MI界面