Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

СРОЧНО НУЖНА ПОМОЩЬ!!! БЕДА С КОМПИЛЯЦИЕЙ!!!

266
08 апреля 2004 года
mhaturov
901 / / 23.10.2003
Кто могёт помочь, срочно отзовитесь!
Компилю проект. Примерно на 50% всё дело виснет и - наглухо. Зпауск с предкомпиляцией ошибок не даёт. В режиме интерпритации приложение работает без сбоев. Машина, на которой производится компиляция - достаточно мощьная. Предыдущие компиляции ошибку не вызывали. В новой версии добавилось лишь несколько новых процедур и новый контрол. Когда компилил "подконтрол". который лежит на этом контроле, а потом собирал деп-файл, дело зависло на подгрузке mscomctrl2. Но я не стал в итоге деп для него собирать и решил mscomctrl2 подцепить к установочному комплекту проекта готового.
Кто знает, отчего могёт "клинить" копилятор? Судя по всему, он где-то входит в цикл, но где и как - не могу понять. Кто сталкивался с бкдой - ПОМОГИТЕ - нужно очень срочно - сегодня нужно сдать проект!!!
266
08 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
Кто могёт помочь, срочно отзовитесь!
Компилю проект. Примерно на 50% всё дело виснет и - наглухо. Зпауск с предкомпиляцией ошибок не даёт. В режиме интерпритации приложение работает без сбоев. Машина, на которой производится компиляция - достаточно мощьная. Предыдущие компиляции ошибку не вызывали. В новой версии добавилось лишь несколько новых процедур и новый контрол. Когда компилил "подконтрол". который лежит на этом контроле, а потом собирал деп-файл, дело зависло на подгрузке mscomctrl2. Но я не стал в итоге деп для него собирать и решил mscomctrl2 подцепить к установочному комплекту проекта готового.
Кто знает, отчего могёт "клинить" копилятор? Судя по всему, он где-то входит в цикл, но где и как - не могу понять. Кто сталкивался с бкдой - ПОМОГИТЕ - нужно очень срочно - сегодня нужно сдать проект!!!


Кто-нибудь знает, как можно просмотреть лог компиляции или как запустить компиляцию из командной строки, потому как мне нужно узнать, где её клинит, но ничего не получается...
ПОМОГИТЕ!!!
НУЖНО ОЧЕНЬ СРОЧНО!!!

266
09 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov

Кто-нибудь знает, как можно просмотреть лог компиляции или как запустить компиляцию из командной строки, потому как мне нужно узнать, где её клинит, но ничего не получается...
ПОМОГИТЕ!!!
НУЖНО ОЧЕНЬ СРОЧНО!!!


Знать так. Опять отвечаю сам себе.
1. Нужно убрать ВСЕ неявные преобразования типов. ОСОБЕННО там, где в циклах вызываются процедуры с передачей им по одних и тех же ссылке массивов на заполнение!!! Тоесть, например, если идёт передача массива в процедуру как "процедура Массив()", а процедура принимает как "Процедура (ByRef Массив as Variant)", то нужно это заменить на "Процедура (ByRef Массив() as тип массива)".
2. ВСЕ БОЛЬШИЕ CASE разбить на более мелкие.
3. Если это не поможит, ОТКЛЮЧИТЬ всякую оптимизацию при компиляции.
Блин, вчера чуть ли не основы Ассемблера вспомнить пришлось. Хорошо, что XTremAll помог - бнаружил ошибку передачи массива. Потом уж разобрался я, как компилятор это дело обрабатывает...

258
09 апреля 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by mhaturov

Знать так. Опять отвечаю сам себе.
1. Нужно убрать ВСЕ неявные преобразования типов. ОСОБЕННО там, где в циклах вызываются процедуры с передачей им по одних и тех же ссылке массивов на заполнение!!! Тоесть, например, если идёт передача массива в процедуру как "процедура Массив()", а процедура принимает как "Процедура (ByRef Массив as Variant)", то нужно это заменить на "Процедура (ByRef Массив() as тип массива)".
2. ВСЕ БОЛЬШИЕ CASE разбить на более мелкие.
3. Если это не поможит, ОТКЛЮЧИТЬ всякую оптимизацию при компиляции.
Блин, вчера чуть ли не основы Ассемблера вспомнить пришлось. Хорошо, что XTremAll помог - бнаружил ошибку передачи массива. Потом уж разобрался я, как компилятор это дело обрабатывает...



И так, в чем разобрался-то? неужели такая ошибка вешала не готовую программу, а прям процесс компилляции этого куска кода?

266
09 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV


И так, в чем разобрался-то? неужели такая ошибка вешала не готовую программу, а прям процесс компилляции этого куска кода?


Да, именно так и было. Даже при запуске проги с предкомпиляцией всё проходило нормально, но при компиляции всё висло.
Сначала я грешил на свои контролы. Потом стал следить за объектными файлами, создаваемыми при компиляции и выяснил, что один из них, соответствующий определённому модулю, который я в большой спешке дописывал (отсюда и неявные преобразования типов - от спешки) создаётся, но не заполняется. Причём процесс C2.exe при его компиляции загружает проц на 100% и циклится.
Полез разбирать модуль. Списался по аське (единственный способ связи с XTremAll'ом), выслал ему код. Вместе перерыли всё. Решили, что кроме одного очень большого CASE и передачи массивов тонких мест нет.
Я целый консилиум собрал. Хотели уже компилятор дезассемблировать. Решили предположить, как он работает. Нашли кусок кода для какого-то сишного компилятора... Разобрали, что и как...
А потом на основании теории нашей о возможности зацикливания компилятора при оптимизации кода под быстрое выполнение поправил - и заработало всё!
А потом кто-то подсказал, что часто такие баги можно поравить отключением опций компиляции, тоесть компилить без оптимизации.
И ёще. Такие баги бывают из - за ошибок в dep - файлах библиотек. Но это оч-ч-ч-ч-чень редко бывает...

258
09 апреля 2004 года
SergeySV
1.5K / / 19.03.2003
Интересно.

А вообще баги бывают и в самом компилляторе, например как-то натолкнулся на баг в Borland C++ 3.какой-то там: конструкция из нескольких операторов условного преехода ставила компилятор в тупик - код компиллил он нормально, токо вот никакого условия отрабатывать не хотел, шагал все время по одному маршруту, я долго пенял на себя, облазил весь код и сократил функцию до одного этого куска, однако ни я ни срочно собранный консилиум не понял что так пугает компиллятор и почему не происходит условного перехода в коде. Поменял в конце концов логику перехода на обратную и все заработало, а воспоминания остались :)
266
09 апреля 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV
Интересно.

А вообще баги бывают и в самом компилляторе, например как-то натолкнулся на баг в Borland C++ 3.какой-то там: конструкция из нескольких операторов условного преехода ставила компилятор в тупик - код компиллил он нормально, токо вот никакого условия отрабатывать не хотел, шагал все время по одному маршруту, я долго пенял на себя, облазил весь код и сократил функцию до одного этого куска, однако ни я ни срочно собранный консилиум не понял что так пугает компиллятор и почему не происходит условного перехода в коде. Поменял в конце концов логику перехода на обратную и все заработало, а воспоминания остались :)


Да, я уж вчера все страшные истории вспомнил про программеров, которые 2 месяца код писали, а он компилиться отказался:D ;)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог