说我有一个C程序,在运行时会调用scanf
,然后根据输入是否满足某些条件进行分支。我可以在常规gdb中运行该程序,然后手动键入它,但是我必须测试很多字符串,而我宁愿使用脚本来完成它。
所以我基本上想定义一个命令,该命令将:
这就是我现在拥有的。
# MyCommand.py
import gdb
class MyCommand(gdb.Command):
def __init__(self):
super(MyCommand, self).__init__("my-command", gdb.COMMAND_DATA)
def invoke(self, arg, from_tty):
gdb.execute("file prog")
gdb.execute("b wrong_input")
gdb.execute("run")
gdb.write("abcd") #stops working here
MyCommand()
我使用以下命令在gdb中运行它:
(gdb) source MyCommand.py
(gdb) my-command
我不知道如何将某些内容而不是gdb打印到程序的流中。当我运行该命令时,它会等待我键入一些内容,并且仅在遇到断点并且gdb shell返回时才打印abcd
。我可以用python吗?如果没有,有什么办法吗?