Непонятная ошибка при выполнении

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Akmal
новенький
Сообщения: 10
Зарегистрирован: 19.03.2006 09:02:56

Сообщение Akmal »

Всем добрый день.

Написал программу подсчета траффика при помощи iptables на linux на fpc 2.0.2

компилируется программа без ошибок, но при выполнении програмки выдает следущее

[root@rubin develope_pascal]# ./acctraff
An unhandled exception occurred at $0805BF96 :
EInvalidPointer : Invalid pointer operation
$0805BF96
$0805C01B
$0805C036
$0805C5D4
$0805C62F
$0805B8BC
$08054EB8
$08054F66
$080591BF
$0804C5A8 P$ACCTRAFF_finalize_implicit, of /develope_pascal/acctraff.pas
$0805998F
$080599FE

что это такое не могу понять и откуда это вылазиет, я в паскале новичек поэтому если не сложно подскажите где копать
Janus
постоялец
Сообщения: 134
Зарегистрирован: 07.11.2005 16:06:49

Сообщение Janus »

Что-то с указателями. Наверное, память не выделена. Точнее сказать нельзя. Нужно компилировать с отладочной инфой, тогда он выдаст файл и номер строки с ошибкой.
Guest

Сообщение Guest »

Фрагмент кода, где вылетает.
Akmal
новенький
Сообщения: 10
Зарегистрирован: 19.03.2006 09:02:56

Сообщение Akmal »

Дело в том что программа после компиляции выполняется и все что от нее требуется делает, но выдает в конце выполнения следущее:

[root@rubin develope_pascal]# ./acctraff
An unhandled exception occurred at $0805BF96 :
EInvalidPointer : Invalid pointer operation
$0805BF96
$0805C01B
$0805C036
$0805C5D4
$0805C62F
$0805B8BC
$08054EB8
$08054F66
$080591BF
$0804C5A8 P$ACCTRAFF_finalize_implicit, of /develope_pascal/acctraff.pas
$0805998F
$080599FE

Я эту прогу запускаю по crond каждые 5 минут, а crond естественно каждые 5 минут шлет руту письма что программа такаято вернула такоето значение.
Вот и хочу разобраться откуда это лезет.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

Вот и хочу разобраться откуда это лезет.

надо скомпилировать с ключем -gl
Илья Аввакумов
новенький
Сообщения: 50
Зарегистрирован: 04.05.2005 15:06:42
Откуда: Екатеринбург

Сообщение Илья Аввакумов »

Akmal писал(а):EInvalidPointer : Invalid pointer operation
$0805BF96
$0805C01B
$0805C036
$0805C5D4
$0805C62F
$0805B8BC
$08054EB8
$08054F66
$080591BF
$0804C5A8 P$ACCTRAFF_finalize_implicit, of /develope_pascal/acctraff.pas
$0805998F
$080599FE

Откровенно говоря, это мало что может сказать. Попробуйте откомпилировать в проверкой на границы диапазона (Range checking code), то есть с опцией -Cr
А еще лучше использовать -Crtoi или -dDEBUG
Dmitry
новенький
Сообщения: 52
Зарегистрирован: 05.07.2005 08:53:06

Сообщение Dmitry »

Akmal писал(а): Дело в том что программа после компиляции выполняется и все что от нее требуется делает, но выдает в конце выполнения следущее:

То же самое было на FreeBSD под FPC 2.0.0.
Программа выполняла все требуемое, а при выходе вылетала с похожей ошибкой.
Все решилось с переходом на FPC 2.0.2.
У тебя похоже та же проблема. Попробуй на FPC 2.1.x.
Akmal
новенький
Сообщения: 10
Зарегистрирован: 19.03.2006 09:02:56

Сообщение Akmal »

А если не секрет где поставить этот ключ -gl, если я писал прогу в IDE FP
Илья Аввакумов
новенький
Сообщения: 50
Зарегистрирован: 04.05.2005 15:06:42
Откуда: Екатеринбург

Сообщение Илья Аввакумов »

Options - Mode - DEBUG
Debugger - гдето там есть галочка
Аватара пользователя
noch
постоялец
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia
Контактная информация:

Сообщение noch »

а почему бы не заняться отладкой и не выяснить где конкретно вылетает?
Akmal
новенький
Сообщения: 10
Зарегистрирован: 19.03.2006 09:02:56

Сообщение Akmal »

Люди!!!!!!!!!!!!
-gl не помогает.

Еще раз повторяю программа все делает что от нее требуется

в проге объявляется массив типа

arr_cl: array of array[0..5] jo string;

далее в проге считывается количество строк в файле
и на основе кол-ва строк выполняется функция

setlength[arr_cl, n_strok];

может здесь чтото не так - это как предположение.

Я в первый раз пишу программу, ВООБЩЕ В ПЕРВЫЙ РАЗ!!!!!!!!!1
Janus
постоялец
Сообщения: 134
Зарегистрирован: 07.11.2005 16:06:49

Сообщение Janus »

Че-то не то.

зачем двумерный массив? Откуда квадратные скобки?

var
arr_cl: array of string;
...
SetLength(arr_cl, n_str - 1); //Нумерация с нуля, не забывай

Дай кусок кода побольше.
Аватара пользователя
STAKANOV
энтузиаст
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение STAKANOV »

Люди!!!!!!!!!!!!
-gl не помогает.

в смысле не помогает? теперь при ошибе должно выдавать номер строки

Я в первый раз пишу программу, ВООБЩЕ В ПЕРВЫЙ РАЗ!!!!!!!!!

показывай программу ;)
Akmal
новенький
Сообщения: 10
Зарегистрирован: 19.03.2006 09:02:56

Сообщение Akmal »

Люди я готов дать вам посмотреть мой код, только не смейтесь над моими потугами. Писана программа в первый раз в жизни.
Илья Аввакумов
новенький
Сообщения: 50
Зарегистрирован: 04.05.2005 15:06:42
Откуда: Екатеринбург

Сообщение Илья Аввакумов »

Не могу протестить прямо сейчас но, быть может, стОит переменные ft1 и ft2 объявлять локальными в каждой процедуре.
ЗЫ И все-таки, что там не срабатывает на опции -gl?
Ответить