如何调试使用来自gdb中辅助txt文件的输入的程序?

时间:2019-04-29 20:59:35

标签: c gdb stdin fopen c99

我想调试一个文件,例如file.c,此文件从txt文件(例如input.txt)读取信息。因此,通常,要编译和运行程序,我将执行以下操作:

gcc -std=c99 -g file.c -o file.exe

并进行调试,我将尝试以下操作:

gdb ./file.exe input.txt

但是,当程序file.c尝试打开argv [1]中指定的文件(input.txt是该文件)时,此操作不起作用,并以No such file exits. '(null)': Bad address失败。

我尝试了以下方法:

1. gdb ./file.exe
   (gdb) run < input.txt
2. gdb ./file.exe
   b main
   (gdb) r
   (gdb) call (int)dup2(open("input.txt",0),0)
   $1 = 0

所有结果都与上述相同... No such file exits. '(null)': Bad address

代码仅仅是:

FILE *input = fopen(argv[1],"r");

1 个答案:

答案 0 :(得分:1)

gdb --args ./file.exe file.txt
b main
run

或做

gdb ./file.exe
b main
run file.txt