我的应用程序是一个简单的可执行文件,从命令行使用,并以stdin
作为输入,stdout
作为输出,因此它的行为与许多GNU工具一样。
为了测试它,我想设置一个 Eclipse CDT DEBUG配置来将文件传递给stdin
,将另一个文件传递给stdout
。
我在DEBUG Configuration
GUI中尝试了一些解决方案失败:
Common / Standard Input and Output / Input File:
我将inputfile.txt
放在同一部分Output file:
中,我放了outputfile.txt
。由于GUI指示工作目录为${workspace_loc:/myprogram}
,它应该没问题,但是当调试器启动时,它会发出警告: [Invalid file specified for console output: test/WittenACM87ArithmCoding-1.txt.coded]
[Invalid file specified for stdin file: test/WittenACM87ArithmCoding-1.txt]
Arguments
我放< inputfile.txt > outputfile.txt
,这显然不是为当然,这两个文件都在工作目录中。所有尝试都在ch = getc(stdin);
代码行上失败,但有一些奇怪的消息:
Can't find a source file at "/build/glibc-p3Km7c/glibc-2.24/io/../sysdeps/unix/syscall-template.S"
Locate the file or edit the source lookup path to include its location.
这是堆栈:
Thread #1 [myprogram] 31960 [core: 5] (Suspended : Signal : SIGINT:Interrupt)
__read_nocancel() at /build/glibc-p3Km7c/glibc-2.24/io/../sysdeps/unix/syscall-template.S:84 0x7ffff7811700
_IO_new_file_underflow() at /build/glibc-p3Km7c/glibc-2.24/libio/fileops.c:600 0x7ffff77a9a00
__GI__IO_default_uflow() at /build/glibc-p3Km7c/glibc-2.24/libio/genops.c:413 0x7ffff77aab02
_IO_getc() at /build/glibc-p3Km7c/glibc-2.24/libio/getc.c:38 0x7ffff77a54f0
main() at /xxxxxx/src/myprogram.c:20 0x555555554f01
当我直接在控制台中运行应用程序时,它可以工作:
./myprogram < inputfile.txt > outputfile.txt
我假设Eclipse没有设法实现文件重定向到stdin
和stdout
,所以很明显,我这样做是错误的。我搜索过它,但here和here没有为我的用例提供解决方案。
因此,为了能够使用Eclipse中的调试器,设置Eclipse DEBUG Configuration
的正确方法是什么?
答案 0 :(得分:0)
实际上,解决方案1使用的是与工作目录无关的相对路径。使用GUI中的任何按钮Workspace...
或File System...
可以选择已存在的文件。
例如,对于Workspace定义,该字段变为:
${workspace_loc:/myprogram/inputfile.txt}
(输出相同)
它有效。调试器说:
[Console output redirected to file:/.../myprogram/outputfile.txt]