Итак, я пишу (или, по крайней мере, пытаюсь) программу для сравнения выходов двух прогонов gdb в python. Это то, что у меня есть до сих пор:Как управлять gdb с помощью подпроцесса Python.Popen?
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
Теперь проблема в том, что это, похоже, не работает. Любые идеи о том, где я могу ошибиться?
Подробнее: Точка программы - это выполнить исполняемый файл, разбить основную функцию и затем пропустить каждый до тех пор, пока выходной сигнал не изменится между ними. Это предназначено как инструмент для отладки (который я бы использовал, даже если никто больше не будет!). Затем, когда вы находите разницу, вы даете вам возможность закончить программу или продолжить. Теоретически это должно сработать, но я просто не уверен, что происходит.
вы должны избавиться от строки 'from subprocess import *' и просто создать объекты subprocess.Popen' –