Отладочные символы

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Отладочные символы или debug символы — информация, которую компилятор языка программирования генерирует автоматически на основе исходных кодов. Это специфичный кусок машинного кода, описывающий текущий исполняемый модуль. Отладочная информация может компилироваться вместе с бинарным исполняемым файлом, и входить в его состав, может присутствовать в качестве отдельного файла, либо же просто отбрасываться на этапе компиляции и/или линковки. Эта информация позволяет человеку использовать «символические» (отладочные) данные о двоичном файле, такие как имена переменных, процедур и функций из исходного кода. Эта информация может быть крайне полезной во время поиска ошибок в исходном коде, отладке программы и разного рода отказах.

Когда отладочные символы включаются в состав самого двоичного файла, его размер может весьма значительно увеличиваться (иногда на несколько мегабайт). Чтобы избежать этого избыточного размера, современные компиляторы выводят отладочную информацию в отдельный файл. Для компиляторов Microsoft этот файл имеет расширение PDB (Program Debug Database). Некоторые компании распространяют отладочные символы своих проектов на отдельных CD/DVD, чтобы конечные пользователи могли отлаживать их продукты. Так же некоторые компании, например, Mozilla Corporation, имеют специальные серверы, с которых можно скачать отладочные символы отдельно.

В репозиториях Debian отладочная информация выделена в пакеты с суффиксом «-dbg», которые могут быть установлены по желанию.

История[править | править вики-текст]

Символические отладчики фактически существовали еще в мире мейнфреймов практически с тех пор, как появились первые подходящие компьютерные дисплеи, на которых соответствующая информация отображалась (ранее же они существовали в качестве символических дампов на распечатках бумаги). Они не были ограничены компилируемыми языками высокого уровня и были так же доступны для уровня ассемблера.

Публичные серверы исходных кодов и символьной отладки[править | править вики-текст]