我想调试一个文件,例如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");
答案 0 :(得分:1)
做
gdb --args ./file.exe file.txt
b main
run
或做
gdb ./file.exe
b main
run file.txt