Serve.cfg:global:preserve line numbers

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/serve.cfg/Глобальные конфигурационные параметры/preserve_line_numbers

Для скриптовых языков, таких как python или node, процесс "компиляции" заключается к приписыванию в начале файла конструкции #! INTERP. После этого файл с программой на интерпретируемом языке может исполняться стандартными средствами Unix без явного указания соответствующего интерпретатора в строке запуска. То есть с точки зрения компонента тестирования ej-super-run "скомпилированные" программы на скриптовых языках ничем не отличаются от скомпилированных исполняемых программ на языках C, C++, rust, go и аналогичных.

Однако у такой модели исполнения есть нежелательный побочный эффект: номера строк программы при выполнении отличаются от номеров строк программы, сданной на проверку. Поэтому сообщения об ошибках в программе, выдаваемые при ее выполнении, имеют номера строк, не соответствующие номерам строк в исходной программе.

Если в конфигурационном файле турнира задать глобальный конфигурационный параметр preserve_line_numbers в положительное значение, программы на скриптовых языках будут обрабатываться таким образом, что номера строк при выполнении программы будут соответствовать номерам строк в сданном программе.

Опция работает при условии, что не используются файлы, добавляемые к исходному коду программы (source_header).

Пример:

preserve_line_numbers

Поддерживается начиная с версии 3.11.0.