10.6. Номера строк при отслеживании ошибок в реальном времени

На верх  Назад  Вперёд

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

Этот список не очень информативный, поэтому существует модуль, который генерирует имена файлов и номера строк вызываемых процедур, использующих адреса стека. Этот модуль называется lineinfo.

Вы можете использовать этот модуль, указав опцию –gl при запуске компилятора. Модуль будет автоматически подключен. Также можно использовать этот модуль, явно указав его имя в разделе uses, но вы должны убедиться, что ваша программа компилируется с отладочной информацией.

Пример программы:

program testline;
procedure generateerror255;
  begin
    runerror(255);
  end;
procedure generateanerror;
  begin
    generateerror255;
  end;
begin
  generateanerror;
end.

Если откомпилировать эту программу с опцией –gl, то получим следующий выходной результат:

Runtime error 255 at 0x0040BDE5
0x0040BDE5 GENERATEERROR255, line 6 of testline.pp
0x0040BDF0 GENERATEANERROR, line 13 of testline.pp
0x0040BE0C main, line 17 of testline.pp
0x0040B7B1

Это более понятно, чем обычное сообщение. Убедитесь, что все модули вашей программы компилируются с отладочной информацией, иначе имя файла и номер строки могут быть не найдены.