GCC - The Complete Reference (537669), страница 56
Текст из файла (страница 56)
ПОЛЕ тга1ПЕ ИСПОЛЬЗуЕтея дпя уКаэаНИя Зиачения, присвоенного определению. Директива . веаЬв определяет строку, которая помещается в таблицу перекодировки программных символов. В кавычках указывается параметр паше — имя, под которым символ вставляется в таблицу. Поле вушстесв — это один символ (например, 'ьт' для глобальной функции, 'а' для глобальной переменной или 'Ь' для имени типа) и номер типа (который фактически может состоять из двух цифр), определяющий символ как новый тип или ссылающийся на ранее определенный тип по новару его записи. Поле еурехпйо предоставляет дополнительную информацию о типе, например, числовой диапазон значений или размер. Директива . всаЪп определяет числовое значение. Директива .
вьаьб устанавливает метку для текущего адреса (адреса расположения директивы). Для метки не используется параметр уа1ие, поскольку ее адрес определяется собственным адресом расположения директивы. Документ, полностью описывающий формат БТАВБ, можно найти по адресу Ьттр:// ювгсез.гедйаг.сощ/аг(Ь/опИпедосз/зтаЬз. Ь(т!, 252 часть |и. внутренняя структура и окружение Формат РИАВЕ Формат отладочной информации .0))гАйт на сегодняшний день уже находится на этапе эксплуатации его второго поколения, О%АКГ2, Стандарт О%АКГЗ продолжает разрабатываться. Между разными версиями формата существуют определенные различия, вследствие чего они несовместимы друг с другом. Тем не менее, отладчик ддЬ распознает и считывает отладочную информацию как в формате О%АКР, так и в формате 0%АКГ2.
Отладочная информация генерируется на языке ассемблера в особые разделы кода с такими именами, как . дебпд рцЬпатев, . йеЬцд егкапдев, . бенд хпйо или просто . беЬцд. Эти специальные разделы содержат данные и выполнимый код, который может использоваться для идентИфикации и извлечения информации из программы по время ее выполнения. Компоновщик группирует разделы с одинаковыми именами в один блок объектного кода, позволяющий указывать расположение различных элементов н устанавливать взаимосвязь между адресами объектного кода и строками исходных файлов.
Полную спецификацию формата О%АКГ2 можно найти по адресу Ьпр:озегу)сев.еогЫпец)г/-згсаггет/де аг)2.рбг' формат СОЕЕ Формат СОТТ(Сопипоп ОЬ)есг Гйе Гоппаг), который иногда называют форматом "а.ош", представляет собой стандартный формат объектных файлов для 0)х)Х будеш Ч и многих производных от нее систем. Этот же формат принят корпорацией М)сгозойг для ООЯ и %п1доеж Вариант формата СОГГ для к 1пцх носит название Е) Г ~ЕхесцгаЫе В)пцх Гоппаг). Формат СОГГ не содержит информации, специально предназначенной для отладки.
В основном, данные этого формата предназначены для компоновки. Тем не менее, в нем содержится достаточно много информации, используемой отладчиком. В таблице перекодировки символов содержатся все перемещаемые символы, а таблица перемещений содержит ссылки на элементы таблицы перекодировки и информацию о типах данных.
Кроме того, он также может содержать информацию о номерах строк, которую можно использовать для сопоставления двоичного кода с исходными файлами. Таблица перекодировки символов включает полное описание каждого символа, а также его размер и дополнительные сведения. Формат СОГГ делит объектный код на разделы. Раздел .еехг. содержит выполнимый код, раздел .
Йаеа — переменные с начальными значениями, а раздел . Ьвв — неинициализированные данные. Основной причиной такого разделения является то, что при одновременном выполнении нескольких экземпляров программ они могут использовать один и тот же раздел . Вехе в памяти машины. Раздел .беса может загружатъся в память в виде одного блока для установки всех начальных значений, а раздел .
Ьвв может находиться в файле в виде одного числа (его размера) и при загрузке программы расширяться до величины требуемой области памяти. Информация, содержащаяся в формате СОГГ, не столь обширна, как для формата ЯТАВБ или О%АКГ Поэтому зачастую в объектный СОГГ-файл вставляется ин- Глава 1З. Использование отладчика аыц 253 формация форматов БТАВВ или ГхттАКЕ, обеспечивающая выполнение расширен- ной отладки. Формат ~СО~~ Формат объектных файлов ХСОУЕ представляет собой расширение формата СОЕГ.
Ои предоставляет таблицы и ссылки для динамической компоновки. Кроме того, формат ХСОГЕ может содержать объектный код как для 32-битной, так и 64-битной модели. Основа формата ХСОЕЕ та же, что и для формата СОГЕ, но включает строки СТАВЯ, содержащиеся в разделе .беЬид, и не использует применяемый форматом СОЕГ способ хранения строк ВТАВБ в ячейках строковых таблиц. Таким образом, формат ХСОЕЕ представляет собой сочетание форматов СОГГ и СТАВЬ. При этом некоторые части стандарта СОРЕ исключены во избежание дублирования данных лри включении полей $ТАВБ в формат СОГГ.
Компиляция программы для отладки Обязательным требованием для вывода отладчиком данных в удобной для восприятия человеком форме является обеспечение возможности поставить в соответствие выполняемому коду исходный текст программы. Это значит, что компилятор должен размещать в объектном коде некоторую дополнительную информацию. Для задания объема и типа включаемой информации можно воспользоваться опциями командной строки компилятора. Объем включаемой информации устанавливается с помощью номеров уровней, списанных в таблице 13.! . Номер уровня устанавливается совместно с флагами, приведенными в таблице 13.2. 3зблица 13ин Три уровня отладочной информации в объектном файле Уфоаава Ода ааааа Для первого уровня в объектный код вставляется минимальный объем отладочной информации. Ее вполне достаточно для трассировки вызовов функций и исследования глобальных переменных, тем не менее, отсутствует информация для сопоставления выполняемого кода со строками исходного кода и информация для отслеживания локальных переменных.
Этот уровень используется по умолчанию. Помимо всей отладочной информации уровня 1 он дополнительно включает данные, необходимые для сопоставления строк исходного кода с выполняемым кодом, а также имена и расположение локальных переменных. Помимо всей отладочной информации уровней 1 и 2 этот уровень включает дополнительную информацию, в частности определения макросов препроцессора, Формат отладочной информации„включаемой в объектный файл, изменяется в зависимости от "родного" формата объектного кода платформь1. Отладчик дбь распознает и может работать с несколькими различнь1ми форматами.
Системы, использующие ЗТАВБ, как правило, используют дополнительную отладочную информацию, распознаваемую отладчиком дбЬ. 254 Часть [И. Внутренняя структура и окружение Таблица 13,2. Опции компилятора осс, используемые для вставки отладочной информации Генерирует отладочную информацию в "родном" формате данной системы. Отладчик ОНО, как и другие отладчики, может работать с такой информацией. На системах, использующих формат ЗТАВЗ, зта опция приводит к формированию дополнительной информации, которая может использоваться только у[плитой ддь и может приводить к неправильной работе других отладчиков.
По умолчанию в качестве уровня отладочной информации (необязательный параметр 1етгв2) используется значение 2. Генерирует отладочную информацию в формате по умолчанию и при наличии возможности включает расширенную информацию для ддЬ. Информация генерируется в наилучшем доступном формате Если ни формат ЗТАВЗ, ни ОЧЧАНЕ2 не доступны, используется "родной" формат платформы. Генерирует отладочную информацию в формате ЗТАВЗ (если он доступен).
Генерирует отладочную информацию в формате ЗТАВЗ (если он доступен) и включает расширенную информацию дпя отладчика вдь. Эта расширенная информация может приводить к неправильной работе других отладчиков. Генерирует объектный код и отладочную информацию в формате СОРг (если он доступен). Этот формат чаще всего используется в системах Зуз1егп Ч до 4-го выпуска.
Генерирует объектный код и отладочную информацию в формате ХСЗР (если он доступен). Генерирует объектный код и отладочную информацию в формате ХСОРГ (если он доступен) и включает расширенную информацию для отладчика ддь Эта расширенная информация может приводить к неправильной работе других отладчиков и компоновщиков. генерирует объектный код и отладочную информацию в формате ОччАяя версии 1 (если он доступен). Этот формат используется в большинстве систем Зув1егп Ч 4-га выпуска Генерирует объектный код и отладочную информацию в формате СЬЧАНГ версии 1 (если он доступен) и включает расширенную информацию для отладчика ддь.
Эта расширенная информация может приводить к неправильной работе других отладчиков и компоновщиков. Генерирует обьектный код и отладочную информацию в формате сччАня версии г (если он доступен). Генерирует объектный код и отладочную информацию в формате ЧМЗ (если он доступен). Этот формат используется в системах ОЕС НМЗ. -9[1еге2! -дддЬ[1еге2] -двгвьв[1еге2] -двгаЬе+ -дааее[1егв1] -дхааее [2ет е1] -дхсаееь -ддивге+ -ддивгя-Я -дчтв [1вге1] В таблице ) 3 2 перечислены опции командной строки компилятора осс, которые могут использоваться лля передачи компилятору указаний по вставке в объектный код отладочной информации.