GDB / MI将stdin和stdout重定向到文件

时间:2017-03-17 12:15:19

标签: python c linux gdb

我正在使用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

2 个答案:

答案 0 :(得分:0)

您应该可以使用mi命令-inferior-tty-set 以及mkfifo实用程序。

答案 1 :(得分:0)

我找到了解决方案。可以将MI GDB命令与GDB命令一起使用。因此,如果我需要将stdin和stdout转发到文件,我可以这样做:

  1. 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
  2. -file-exec-and-symbols <filename> //在主要功能(或任何地方的esle)设置断点
  3. -break-insert main //将stdin和stdout转发到文件
  4. run < input.txt > output.txt //开始调试
  5. 在此之后,您可以运行像step或-exec-step之类的命令或者像往常一样运行的任何其他命令。