Выбрать главу

¹ Эту опцию указывать не требуется, если не была указана опция -O3.

Табл. 1.21. Опции командной строки для включения отладочной информации

Инструментарии Опции компилятора Опции компоновщика
Comeau (Unix) GCC -g -g
Intel (Linux) Metrowerks
Visual C++ Intel (Windows) См. табл. 1.22 См. табл. 1 22
Comeau (Windows) To же, что и у основного компилятора, но вместо тире (-) используется слеш (/) То же, что и у основного компилятора, но вместо тире (-) используется слеш (/)
Borland -v -v
Digital Mars -g -co

Табл. 1.22. Включение отладочной информации при использовании Visual C++ или Intel для Windows

Опции компилятора Опции компоновщика IDE options¹ Описание
-Z7 -debug C7 Compatible (совместимость с C7) Отладочная информация сохраняется в файлах .obj и .exe
-Zi [-Fd<pdb-file-for-obj>]. -debug[-pdb:<pdb-file-for-exe>] Program Database (база данных программы) Отладочная информация сохраняется в файлах .pdb; опция в квадратных скобках используется для указания файлов .pdb
-Zi [-Fd<pdbfile-for-obj>] -debug [-pdb:<pdb-file-for-exe>] Program Database for Edit & Continue (база данных программы для редактирования и продолжения) Отладочная информация сохраняется в файлах .pdb; опция в квадратных скобках используется для указания файлов .pdb. Программа может быть перекомпилирована во время сессии отладки

¹ Чтобы получить доступ к этим опциям, перейдите к Configuration Properties→С/С++→ General→Debug Information Format (формат отладочной информации).

BoostBuild предоставляет похожий механизм создания отладочной сборки: просто добавьте к требованиям цели <variant>debug или используйте опцию командной строки variant=debug, которую можно сократить до просто debug.

Некоторые IDE также предоставляют простой способ создания отладочной сборки. Например, при создании нового проекта в Visual C++ IDE автоматически генерирует конфигурации для отладочной и окончательной сборок. Чтобы запросить отладочную сборку, просто выберите в меню Build опцию Configuration Manager и в качестве активной выберите конфигурацию Debug. Также можно выбрать Debug в раскрывающемся списке конфигураций на стандартной панели инструментов. При следующей сборке проекта будет создана отладочная сборка.

Аналогично при создании проекта в CodeWarrior с помощью одного из шаблонов проектов Metrowerks, называемых «принадлежности» (stationery), IDE автоматически генерирует отладочную и окончательную цели. Имя отладочной цели может быть разным, но оно всегда должно включать слово «debug». Чтобы запросить отладочную сборку, в меню Project выберите пункт Set Default Target (установить цель по умолчанию), а затем выберите элемент меню, соответствующий отладочной цели. Также можно выбрать отладочную цель в раскрывающемся списке целей в окне проекта.

C++Builder не поддерживает множественных конфигураций для одного проекта, но он предоставляет простой способ создания отладочной сборки. Чтобы запросить отладочную сборку, перейдите в Project Options→Compiler и нажмите на Full debug (полная отладка). Это отключит все оптимизации и встраивание и включит отладочную информацию.

При использовании IDE, которая не предоставляет готовых отладочной и окончательной конфигураций, такой как Dev-C++, или если вам требуется получить дополнительный контроль над параметрами проекта, обратитесь к таблицам с 1.23 до 1.25.

Табл. 1.23. Отключение оптимизаций из IDE

IDE Конфигурация
Visual C++ На страницах свойств проекта перейдите к Configuration Properties→C/C++→Optimization и установите опцию Optimization в значение Disabled (отключено). Для остальных опций на этой странице оставьте значения по умолчанию
CodeWarrior В окне Target Settings перейдите к Code Generation→Global Optimizations (генерация кода→глобальная оптимизация) и выберите Off (выкл)
C++Builder В Project Options перейдите к Compiler, в разделе Code optimization (оптимизация кода) выберите None
Dev-C++ В Project Options перейдите к Compiler→Optimization и установите опцию Perform a number of minor optimizations (выполнить несколько незначительных оптимизаций) в значение No (нет), затем перейдите к Compiler→Optimization→Further optimizations (дополнительные оптимизации) и установите опции Optimize (оптимизировать), Optimize more (дополнительно оптимизировать) и Best Optimization (наилучшая оптимизация) в значение No

Табл. 1.24. Отключение встраивания из IDE

IDE Конфигурация
Visual C++ На страницах свойств проекта перейдите к Configuration Properties→C/C++→Optimization и установите опцию Inline Function Expansion (расширение встраиваемых функций) в значение Default (по умолчанию)
CodeWarrior В окне Target Settings перейдите к Language Settings→C/C++ Language и установите Inline Depth (глубина встраивания) в значение Don't Inline (не встраивать)
C++Builder В Project Options перейдите к Compiler и в разделе Debugging установите флажок Disable inline expansions (отключить встраивание функций)
Dev-C++ См. запись для GCC в табл. 1.20 и обратитесь к рецепту 1.20