所以我正在编写(或至少尝试)一个程序来比较在 python 中运行的两个 gdb 的输出。这是我到目前为止所拥有的:
from subprocess import *
import subprocess
file = raw_input('enter program name (with a ./ if in local directory): ')
p1 = Popen(['gdb', file], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p2 = Popen(['gdb', file], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p1.communicate(input='break main')
p2.communicate(input='break main')
args1 = raw_input('args for running program (from file) (ie r < input.txt): ')
args2 = raw_input('args for running program (from file) (for program 2...): ')
p1.communicate(input=args1)
p2.communicate(input=args2)
while True:
p1out = p1.communicate(input='continue')[0]
p2out = p2.communicate(input='continue')[0]
if p1out != p2out:
print 'difference: '
print 'p1: ' + p1out
print 'p2: ' + p2out
cont = raw_input('continue (y/n): ')
if cont != 'y':
break
现在的问题是这似乎不起作用。关于我可能出错的地方有什么想法吗?
更多细节:程序的重点是接收一个可执行文件,在 main 函数处中断,然后运行每个函数,直到输出在两者之间变化。这旨在作为一种调试工具(我会使用它,即使没有其他人会使用它!)。然后,当您发现差异时,您可以选择是结束程序还是继续。从理论上讲,这应该可行,但我只是不确定出了什么问题。