Символ отладки представляет собой особый вид символа , который придает дополнительную информацию таблицы символов из в объектный файл , например , как разделяемую библиотеку или исполняемый файл . Эта информация позволяет символьному отладчику получить доступ к информации из исходного кода двоичного файла, такой как имена идентификаторов, включая переменные и подпрограммы.
Символьная информация может быть скомпилирована вместе с двоичным файлом модуля или распределена в отдельном файле, или просто отброшена во время компиляции и / или компоновки .
Эта информация может быть полезна при попытке исследовать и исправить сбой приложения или любую другую ошибку. [1]
Встроенные символы
Символы отладки обычно включают не только имя функции или глобальной переменной, но также имя файла исходного кода, в котором встречается символ, а также номер строки, в которой он определен. Другая информация включает тип символа (целое число, число с плавающей запятой, функция, исключение и т. Д.), Область видимости ( область видимости блока или глобальная область ), размер и, для классов, имя класса, а также методы и члены. в этом. Вся эта дополнительная информация может занимать довольно много места, особенно имена файлов и номера строк. Таким образом, двоичные файлы с отладочными символами могут стать довольно большими, часто в несколько раз превышающими размер удаленного файла. [2] Для того, чтобы избежать этого дополнительного размера, большинство дистрибутивов операционной системы грузят двоичные файлы, которые раздели , то есть , из которого все отладочных символов были удалены. Это достигается, например, с помощью команды strip в unix.
Некоторые компиляторы выводят символьную отладочную информацию в отдельный файл, а не помещают ее вместе с двоичным файлом.
SysV ABI
SysV Application Binary Interface включает спецификацию формата отладочных символов. Это позволяет любому совместимому компилятору или ассемблеру создавать символы отладки в стандартизованном формате, а любому отладчику, например GDB , получать доступ и отображать эти символы. Например, часть важной отладочной информации включает строку кода в исходном файле, которая определяет этот символ (функцию или глобальную переменную), а также символы, связанные с кадрами исключений.
Символы отладки Microsoft
Компиляторы Microsoft создают файл, называемый файлом PDB, содержащий символы отладки. Некоторые компании поставляют PDB на своих CD / DVD для устранения неполадок, а другие компании (например, Microsoft и Mozilla Corporation ) позволяют загружать символы отладки из Интернета. WinDBG отладчик и Visual Studio IDE может быть настроен для автоматической загрузки символов отладки для Windows , библиотек DLL по требованию. Символы отладки PDB, которые распространяет Microsoft, включают только общедоступные функции, глобальные переменные и их типы данных. Mozilla Corporation имеет подобную инфраструктуру , но распространяет полную информацию об отладке.
И Microsoft, и Mozilla также предлагают исходный код (Microsoft предоставляет определенные компоненты, такие как большая часть .NET Framework , тогда как Mozilla предлагает полный исходный код), чтобы упростить отладку.
яблоко
На платформах Apple отладочные символы необязательно генерируются в процессе сборки в виде файлов dSYM. Apple использует термин «символический» для обозначения замены адресов в диагностических файлах на удобочитаемые значения. [3]
История
Символьные отладчики существуют с эры мэйнфреймов , почти с тех пор, как впервые появились подходящие компьютерные дисплеи для отображения символьной отладочной информации (и даже раньше с символическими дампами на бумаге). Они не ограничивались компилируемыми языками высокого уровня и были доступны также для программ на языке ассемблера . Для IBM / 360 они производили объектный код (по запросу), включающий «карты SYM». Обычно они игнорировались загрузчиком программ, но были полезны для символьного отладчика, поскольку хранились в той же программной библиотеке, что и исполняемый логический код.
Смотрите также
- CA / EZTEST
- Формат данных отладки
- Microsoft SYMDEB
- Digital Research SID (отладчик символьных инструкций)
Рекомендации
- ^ «Отладка с помощью символов» . Центр разработки для Windows . Microsoft . Архивировано 11 января 2020 года . Проверено 11 января 2020 .
- ^ "Для чего нужны символы?" . TechNet . Microsoft . 2008-07-15.
- ^ «Понимание и анализ отчетов о сбоях приложений iOS» . Библиотека разработчика iOS . Apple, Inc. 8 января 2018 г. [29 января 2009 г.]. Техническое примечание TN2151. Архивировано 19 декабря 2019 года . Проверено 11 января 2020 .
Публичный символ и исходные серверы
- Сервер символов Microsoft
- Справочный исходный сервер Microsoft: http://referencesource.microsoft.com/
- Исходный сервер Mozilla: https://developer.mozilla.org/en/Using_the_Mozilla_source_server
- Библиотеки .NET в SymbolSource: http://www.symbolsource.org/