Как разместить входной файл вместо стандартного ввода в приложении Eclipse CDT? - PullRequest
0 голосов
/ 27 апреля 2018

Мое приложение представляет собой простой исполняемый файл, используемый из командной строки, и принимает stdin в качестве ввода и stdout в качестве вывода, поэтому оно ведет себя подобно многим инструментам GNU. Чтобы проверить это, я хочу настроить Eclipse CDT DEBUG Configuration для передачи файла в stdin и еще одного в stdout.

Я безуспешно попробовал несколько решений, все в DEBUG Configuration GUI:

  1. В 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]

  1. В 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)<br> __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<br> __GI__IO_default_uflow() at /build/glibc-p3Km7c/glibc-2.24/libio/genops.c:413 0x7ffff77aab02<br> _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, поэтому, очевидно, я делаю это неправильно. Я искал его, но здесь и здесь не предоставляют решения для моего варианта использования.

Итак, чтобы иметь возможность использовать отладчик из Eclipse, как правильно настроить Eclipse DEBUG Configuration?

1 Ответ

0 голосов
/ 27 апреля 2018

Фактически, решение 1 использовало относительный путь, не связанный с рабочим каталогом. Использование кнопки Workspace... или File System... в графическом интерфейсе позволяет выбрать файлы, которые уже должны существовать.

Например, с определением рабочего пространства, поле становится:

${workspace_loc:/myprogram/inputfile.txt} (то же самое для вывода)

И это работает. Отладчики говорят:

[Console output redirected to file:/.../myprogram/outputfile.txt]

...