我正在使用GDB Machine接口来调试从stdin读取并写入sdtout的二进制文件。我想将stdin和stdout重定向到文件。使用普通的GDB,我可以使用这样的运行命令:
run < input.txt > output.txt
有没有办法可以像这样使用GDB / MI命令-exec-run?
以下是类似的问题GDB/MI detecting target waiting for input,但与普通的gdb解决方案相比,它似乎相当复杂。
我还没有在文档中找到任何内容: ftp://ftp.gnu.org/old-gnu/Manuals/gdb/html_chapter/gdb_22.html#SEC216
答案 0 :(得分:0)
您应该可以使用mi命令-inferior-tty-set 以及mkfifo实用程序。
答案 1 :(得分:0)
我找到了解决方案。可以将MI GDB命令与GDB命令一起使用。因此,如果我需要将stdin和stdout转发到文件,我可以这样做:
dtc_code = dtc_designator + dtc_designator1 + dtc_designator2 + DTCLogged[loopindex+1]
print dtc_code
connection = pypyodbc.connect('DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;UserCommitSync=Yes;SafeTransactions=0;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:\PYTHON27;DBQ=C:\PYTHON27\iso14229dtcs.mdb;')
cursor = connection.cursor()
cursor.execute("SELECT Field2 FROM DTC_CODES Where Field1 = 'dt_code'")
for row in cursor.fetchall():
print row
// readfile to debug -file-exec-and-symbols <filename>
//在主要功能(或任何地方的esle)设置断点-break-insert main
//将stdin和stdout转发到文件run < input.txt > output.txt
//开始调试在此之后,您可以运行像step或-exec-step之类的命令或者像往常一样运行的任何其他命令。