Подскажите, как быть! Для счастья мне хватило бы map.
MAP-файлы
Модератор: Модераторы
MAP-файлы
Здравствуйте! Я столкнулся с такой проблемой: программа компилируется и работает в Delphi, но при компиляции фрипаскалем творится нечто странное: 1) в одной из процедур происходит переполнение стека... размер стека я увеличил, программа вроде бы идёт дальше, но! 2) где-то она зацикливается... проблема в том, что я никак не могу выяснить это место: программу запустить из-под дебагера не получится, из-за сложного взаимодействия с другим процессом при запуске. С помощью аттача к этому процессу из Delphi я узнал адреса инструкций, по которым бегает зацикленная программа. Но! По этим адресам не могу сказать в какой я функции нахожусь, потому что .map файлы фрипаскаль похоже не умеет генерировать (в документации и интернете ничего по вопросу не нашёл). Пробовал аттачиться при помощи gdb, но он всплывает где-то в недрах ntdll (как и Delphi в общем-то) и дотрейсить до самой программы похоже невозможно, или терпения не хватает
Подскажите, как быть! Для счастья мне хватило бы map.
Подскажите, как быть! Для счастья мне хватило бы map.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Кстати говоря... Недавно был багрепорт http://www.freepascal.org/mantis/view.php?id=7010, связанный с чтением данных из файлов. Автор утверждал, что глюки появлялись только на определенных процессорах. Однако ж пока вопрос повис в воздухе. Поэтому, если удастся локализовать неправильно работающий кусок программы - это могло бы оказать неоценимую услугу всем 
Я нашёл, где проблема... f - файл, остальные переменные - числа. Бинарник зацикливается "внутри" этой строчки, если нет перехода на новую строку (символа конца файла тоже нет). Не знаю, зависит ли от процессора, у меня PIV.
Код: Выделить всё
Read(f, x, y, w, h);- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
У товарища подозрительно похожий файл - тоже оборванная последняя строка... Но у меня его пример работает нормально, и сколько я ни баловался с размером файла (есть подозрение, что эффект может быть связан с длиной буфера) - зациклить, увы, не смог.
Вообще, со времен FPC 2.0.0 исправлено уже довольно много багов. В том числе есть и исправление в ф-ции NextChar, которая вызвается в цикле из ReadNumeric. Так что я бы порекомендовал апгрейд до 2.0.2 или даже 2.0.3 - чем черт не шутит...
Вообще, со времен FPC 2.0.0 исправлено уже довольно много багов. В том числе есть и исправление в ф-ции NextChar, которая вызвается в цикле из ReadNumeric. Так что я бы порекомендовал апгрейд до 2.0.2 или даже 2.0.3 - чем черт не шутит...
такой вопрос, у меня fpc 2.2.4, в командую строку сборки проекта добавляю -k-Map -kmap.map , но никакого map.map не появляется, а тот который генерируется с ключем -Xm - не имеет информации о адресах строк в коде, чтобы адекватно увязать адрес exception. (из call stack)
Не посоветуете какого либо решения для получения именно номеров строк? Заранее спасибо.
Не посоветуете какого либо решения для получения именно номеров строк? Заранее спасибо.
