¹ Эту опцию указывать не требуется, если не была указана опция -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 |