среда, 9 марта 2011 г.

Проблема компиляции debug-версии программы в Code::Blocks 10.05.

   Периодически на меня с новой волной наплывает желание углубить и расширить свои понятия и знания в языке программирования C++. Вот и в этот раз вместо того, чтобы думать о подарках для известных мне дам, в преддверии праздника 8 марта, я снова взялся за "чистый" C++. Проведя ревизию установленных фреймворков, компиляторов, редакторов и прочего ПО решил, в этот раз, остановить свой выбор на Code::Blocks (в связке с MinGW) благо он еще и обновился с последнего моего пользования им до версии 10.05 и обещал быть стабильным и послушным ;-).

   Обновление (путем деинсталляции версии 8.02 и установкой 10.05), а так же компиляция тестового проекта "Hello world!" прошли успешно. "Неприятности" начались позже - когда я попытался запустить простенькую программу в режиме отладки - отладчик категорически отказывался "видеть" мои точки останова (breakpoints). Поиски в Интернете привели на несколько тем с описанием аналогичной ситуации, а на официальном форуме Code::Blocks даже дан посыл на местный WiKi по данному вопросу. Что бы не раздувать пост, сразу скажу, на англоязычных форумах находил несколько топиков, где пользователи так же как и я совершенно не понимали почему, вдруг, отладчик игнорирует все точки останова. На решении проблемы натолкнуло сообщение одного разработчика, где он посетовал, что Code::Blocks всегда собирает release-сборку в независимости от того, какая цель выбрана (debug/release). 
   Сравнив размеры скомпилированной программы в обоих вариантах я, уже без удивления, обнаружил что они совершенно одинаковы. Включив в IDE отображение всей информации связанной с работой компилятора ("Settings"->"Compiler and debugger settings"->"Global compiler settings"->"Other settings": "Compiler logging"="Full command line"), во время сборки debug-версии было замечено, что компилятору передается ключ оптимизации "-Os" - при этом соответствующая опция для режима debug в настройках программы и настройках проекта была отключена. Дабы исключить влияние третьих сил - затмения Венеры и прочего :-), была сделана попытка собрать стандартный проект "Hello world!" - результат тот же - добавлялся ключ оптимизации "-Os". 
   Не помогла и переустановка самого Code::Blocks - злосчастный ключ появлялся все равно. Единственное, что вернуло все на круги своя, это удаление всех настроек IDE, включая и те, что она оставляет после себя даже после деинсталляции - в частности директория с конфигурационными файлами: "%SystemDrive%\Documents and Settings\ИмяПользователя\Application Data\codeblocks". После этого повторная (тндцатый раз ;-) ) установка Code::Blocks продемонстрировала чудеса производительности и "послушности" - собирая debug-версию без ключей оптимизации. 
   Проведенные после тесты по сборке debug/release версий не вызвали повторение описанной ситуации, на чем собственно я успокоился и продолжил свое "копание" C++, но решил отписаться тут - вдруг кому пригодиться ;-).

1 комментарий:

  1. Спасибо за проделанную работу. Натолкнулся на аналогичную проблему. Теперь знаю как решать

    ОтветитьУдалить