Символ отладки - Debug symbol

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

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

Эта информация может быть полезна при попытке исследовать и исправить грохот приложение или любая другая ошибка.[1]

Встроенные символы

Символы отладки обычно включают не только имя функции или глобальной переменной, но также имя файла исходного кода, в котором встречается символ, а также номер строки, в которой он определен. Другая информация включает тип символа (целое число, число с плавающей запятой, функция, исключение и т. Д.), Область видимости (область действия блока или же глобальный масштаб ), размер, а для классов - имя класса, а также методы и члены в нем. Вся эта дополнительная информация может занимать довольно много места, особенно имена файлов и номера строк. Таким образом, двоичные файлы с отладочными символами могут стать довольно большими, часто в несколько раз превышающими размер вырезанного файла.[2] Чтобы избежать этого дополнительного размера, большинство дистрибутивов операционных систем поставляют двоичные файлы, которые раздетый, т.е. из которого удалены все символы отладки. Это достигается, например, с помощью полоска команда в unix.

Некоторые компиляторы выводят символьную отладочную информацию в отдельный файл, а не помещают ее вместе с двоичным файлом.

SysV ABI

В SysV Двоичный интерфейс приложения включает спецификацию формата отладочных символов. Это позволяет любому совместимому компилятору или ассемблеру создавать символы отладки в стандартизованном формате и для любого отладчика, например 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 предлагает полный исходный код), чтобы упростить отладку.

яблоко

На яблоко платформ, символы отладки необязательно генерируются в процессе сборки в виде файлов dSYM. Apple использует термин «символический» для обозначения замены адресов в файлах диагностики на удобочитаемые значения.[3]

История

Символьные отладчики существуют с мэйнфрейм эпохи, почти с момента появления первого подходящего компьютерные дисплеи для отображения символьной отладочной информации (и даже раньше с символьной свалки на бумаге). Они не ограничивались высоким уровнем составлен языков, а также были доступны для язык ассемблера программы. Для IBM / 360, они производили объектный код (по запросу), который включал "карты SYM". Обычно они игнорировались загрузчиком программы, но были полезны для символьного отладчика, поскольку они хранились в той же программной библиотеке, что и исполняемый логический код.

Смотрите также

Рекомендации

  1. ^ «Отладка с использованием символов». Центр разработки для Windows. Microsoft. В архиве из оригинала на 2020-01-11. Получено 2020-01-11.
  2. ^ "Для чего нужны символы?". TechNet. Microsoft. 2008-07-15.
  3. ^ «Понимание и анализ отчетов о сбоях приложений iOS». Библиотека разработчика iOS. Apple, Inc. 2018-01-08 [2009-01-29]. Техническое примечание TN2151. В архиве из оригинала на 2019-12-19. Получено 2020-01-11.

Публичный символ и исходные серверы