在我开始运行调用gdb并暂停到Gdb提示符的shell脚本后,我需要提供Gdb命令。因此,要加载并执行图像(.elf)文件,我将调用以下子进程:
import subprocess
os.chdir(r"/project/neptune_psv/fw/")
print os.getcwd()
proc = subprocess.Popen('./Execute.sh -i TestList_new.in -m 135.20.230.160 -c mpu',shell = True,stdin = subprocess.PIPE)
在Execute.sh停止到Gdb提示后,我需要提供两个Gdb命令:
任何人都可以帮助我如何通过stdin提供这两个命令吗?
答案 0 :(得分:0)
我认为最简单的方法是使用类似pexpect
的东西,这是Python中的一个期望克隆。这提供了一种以编程方式控制其他交互式过程的方法。
但是,由于您专门使用gdb
,请注意这不是驱动gdb的最佳方法。有两种更好的方法。首先,您可以使用其内置的Python API直接编写gdb。如果您的用例可以使用,这是最好的方法,因为它比尝试解析输出要简单得多。但是,如果必须解析输出,则应调查“MI”。这是gdb的“机器接口”,它提供了一种模糊的类JSON(它早于真正的JSON)控制gdb的方式。有可用的MI解析库,虽然我不记得是否有用Python编写的。