Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
01.05.2014
Размер:
206.19 Кб
Скачать

Опции отладки

-g (--debug)

Генерировать информацию для отладчика в формате, принятом в данной операционной системе (stabs, COFF, XCOFF, DWARF). Отладчикgdb может использовать информацию в любом из этих форматов. Компилятор СКРВ Багет порождает отладочную информацию в форматеDWARF.

Компилятор позволяет использовать опцию -gодновременно с опциями оптимизации-O. Однако при отладке оптимизированного кода могут возникнуть определенные проблемы. Например, некоторые декларированные переменные могут отсутствовать; управление может "перескочить" в какое-нибудь неожиданное для вас место в программе; некоторые операторы могут вообще исчезнуть при оптимизированной компиляции либо из-за того, их результатом является константа, либо из-за того, что соответствующее значение получено в результате других вычислений; некоторые операторы могли попасть в другое место программы, потому что были вынесены из цикла.

Тем не менее, отладка оптимизированных программ вполне допустима и возможна.

-gуровень (--debug уровень)

Вывести отладочную информацию заданного уровня.Уровень определяет объем выводимой информации и, следовательно, возможности последующей отладки. По умолчаниюуровень=2.

Уровень=1 порождает минимальную информацию, достаточную для того, чтобы отслеживать вложенность вызовов функций. Выводятся описания функций и внешних переменных, но информация о локальных переменных и номерах строк отсутствует.

Уровень=3обеспечивает вывод дополнительной информации, например, макроопределений, имеющихся в программе.

-dбуквы

Выдавать отладочные дампы во время компиляции. Моменты выдачи дампов определяются при помощи букв. В большинстве случаев дамп помещается в файл с именемфайл, к которому добавлено некоторое расширение (файл— имя компилируемого файла). Например, при компиляции файлаtest.c с опцией-dr дамп будет помещен в файл с именемtest.c.rtl. Ниже перечислены возможные в данной опциибуквыи типы соответствующих дампов.

M Выдать после препроцессирования все макроопределения, а результат препроцессирования не выдавать.

N Выдать в конце препроцессирования имена всех макросов.

D Выдать в конце препроцессирования все макроопределения в дополнение к обычному выводу.

Y Выдавать на стандартный протокол отладочную информацию во время синтаксического разбора.

r Выдать сгенерированный RTL-код непосредственно после его генерации вфайл.rtl.

x Не компилировать функции, а только генерировать для них RTL-код. Используется обычно в сочетании сr.

j Выдать RTL-дамп после оптимизации переходов вфайл.jump.

s Выдать RTL-дамп после исключения общих подвыражений (и повторной оптимизации переходов, которая иногда выполняется после этого) вфайл.cse.

L Выдать RTL-дамп после оптимизации циклов вфайл.loop.

t Выдать RTL-дамп после повторного исключения общих подвыражений (и повторной оптимизации переходов, которая иногда выполняется после этого) вфайл.cse2.

f Выдать RTL-дамп после анализа потоков данных вфайл.flow.

c Выдать RTL-дамп после комбинирования инструкций вфайл.combine.

S Выдать RTL-дамп после первого прохода планирования инструкций вфайл.sched.

l Выдать RTL-дамп после локального распределения регистров вфайл.lreg.

g Выдать RTL-дамп после глобального распределения регистров вфайл.greg.

R Выдать RTL-дамп после второго прохода планирования инструкций вфайл.sched2.

J Выдать RTL-дамп после последней оптимизации переходов вфайл.jump2.

d Выдать RTL-дамп после планирования переходов со слотами задержки вфайл.dbr.

k Выдать RTL-дамп после перехода к стековым регистрам вфайл.stack.

a Выдать все перечисленные выше RTL-дампы.

M Выдать на стандартный протокол статистику использования памяти.

P Аннотировать ассемблерный вывод комментариями, указывающими, какие шаблоны инструкций и какие их альтернативы были использованы.

-save-temps(--save-temps)

Сохранять временные промежуточные файлы. Оставлять их в текущем каталоге с базовым именем исходного файла и соответствующим расширением. Например, при компиляции файла foo.cс опциями-c -save-temps в текущем каталоге останутся файлыfoo.i, foo.s, foo.o.

-print-prog-name=программа(--print-prog-name=программа)

Напечатать полное имя программы(напримерcpp), которая бы использовалась для обработки файлов при данном запускеgcc, и больше ничего не делать.

-print-search-dirs (--print-search-dirs)

Напечатать имя установочного каталога и список каталогов, в которых gccбудет искать выполняемые программы и библиотеки, и больше ничего не делать.

Это полезно в таких случаях, когда gccвыдает диагностику типа "installation problem, cannot exec cpp: No such file or directory". ("Проблема установки, не могу выполнить cpp: нет такого файла или каталога".) В такой ситуации следует либо поместитьcppи другие компоненты компилятора в те каталоги, гдеgccрассчитывает их найти, либо определить переменную окруженияGCC_EXEC_PREFIX, задав в качестве ее значения имя каталога, где фактически находятся компоненты компилятора (см. ниже гл. 13).

Соседние файлы в папке Еще материалы