2015-04-28 5 views
0

После некоторого времени работы мой код начал поднять исключение SIGILL при его использовании. Я не понял документацию. Что означает исключение SIGILL в практических темах?Исключение SIGILL в Lazarus

Это код, который повышает исключение, не могли бы вы помочь мне указать, почему?

function TfrmPascal.valorElemento(lin, col: integer): integer; 
begin 
    if lin < 0 then valorElemento:= 0 
    else if col < 0 then valorElemento:= 0 
    else if (col=0) or (col = lin) then valorElemento:=1 
    else valorElemento:= valorElemento(lin-1, col-1) + valorElemento(lin-1, col); 
end; 

ответ

2

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

  1. Ваш исполняемый файл поврежден.
  2. Ваш компилятор испустил дефектный код.
  3. Вы пытаетесь выполнить данные, а не код.

Последний вариант является наиболее вероятным. Это может произойти, если вы списали конец массива, испортили стек и т. Д.

Код в вопросе сам по себе выглядит совершенно безвредным. Почти наверняка дефект в вашем коде лежит в другом месте.

+0

Могла ли SIGILL быть связанной с проблемами с номерами единиц? –

+0

Я не знаю, что это значит. Я думал, ты хочешь знать, что такое СИГЕЛЬ. –

+0

Дэвид, спасибо за помощь еще раз. Похоже, что это было связано с повреждением данных, поскольку я не вносил никаких изменений в файлы, и они снова начали работать после перезапуска Lazarus. Ваш ответ дал мне хороший намек. –

 Смежные вопросы

  • Нет связанных вопросов^_^