Serve.cfg:global:preserve line numbers

From EjudgeWiki
Revision as of 22:21, 10 August 2023 by Cher (talk | contribs) (...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Навигация: Главная страница/Система 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.