stringtranslate.com

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

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

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

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

Отладочная информация

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

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

Эта информация может храниться в таблице символов объектного файла, исполняемого файла или общей библиотеки либо в отдельном файле.

В некоторых системах, например, z/OS , отладочная информация содержит больше, чем просто таблицу символов, например, ADATA, обсуждаемая в § OS/390 и др., содержит исходный код.

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

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

Unix-подобные системы

stabs был ранним форматом для отладочных символов в Unix-подобных системах. Более новый формат DWARF , для которого существуют формальные спецификации, в значительной степени вытеснил его. Спецификация позволяет любому совместимому компилятору или ассемблеру создавать отладочные символы в стандартизированном формате, а любому отладчику, например GNU Debugger (GDB), получать доступ к этим символам и отображать их.

ИБМ

Компиляторы для линии мэйнфреймов IBM, произошедшие от System/360, имеют опцию TEST, которая заставляет компилятор включать отладочную информацию [3] [4] [5] в объектный файл. Аналогично, редакторы Binder и linkage имеют опцию TEST, которая заставляет отладочную информацию сохраняться [6] в загрузочном модуле. Различные инструменты отладки, например, OS/360 TESTRAN, TSO TEST, имеют возможность использовать встроенные определения символов.

Внешние отладочные файлы

ОС/390и др.

IBM High Level Assembler (HLASM) и другие компиляторы, работающие, например, на z/OS , имеют опцию ADATA, которая создает файл Associated data (ADATA) [7], содержащий больше информации, чем та, что создается старой опцией TEST. В частности, файл ADATA включает строки исходного кода и их метаданные.

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

Компиляторы Microsoft генерируют файл базы данных программы (PDB), содержащий отладочные символы. Некоторые компании поставляют PDB на своих CD/DVD для устранения неполадок, а другие компании (например, Microsoft и Mozilla Corporation ) разрешают загрузку отладочных символов из Интернета. Отладчик WinDbg и Visual Studio IDE можно настроить на автоматическую загрузку отладочных символов для динамически подключаемых библиотек Windows (DLL) по требованию. Отладочные символы PDB, которые распространяет Microsoft, включают только публичные функции, глобальные переменные и их типы данных. Mozilla Corporation имеет похожую инфраструктуру, но распространяет полную отладочную информацию.

Яблоко

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

История

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

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

Ссылки

  1. ^ "Отладка с помощью символов". Windows Dev Center . Microsoft . Архивировано из оригинала 2020-01-11 . Получено 2020-01-11 .
  2. ^ "Для чего нужны символы?". TechNet . Microsoft . 2008-07-15. Архивировано из оригинала 2014-12-26 . Получено 2015-01-04 .
  3. ^ "Приложение D: Форматы входных записей редактора TESTRAN" (PDF) . Операционная система IBM System/360 - TESTRAN - Руководство по логике программ - Номер программы 3605-PT-516 (PDF) . TNL GN26-8016. IBM . 1971-04-01. стр. 119–120. GY28-6611-0 . Получено 11 июля 2024 г. .
  4. ^ "Приложение. Соглашения о входных данных и форматы записей" (PDF) . MVS/370 - Linkage Editor Logic - Data Facility Product 5665-295 - Выпуск 1.0 (PDF) (Первое издание). IBM . Апрель 1983 г. стр. 195–206. LY26-3921-0 . Получено 11 июля 2024 г. .
  5. ^ LY26-3921-0, стр. 195, рисунок 69. Запись ввода SYM (изображение карты).
  6. ^ LY26-3921-0, стр. 199, рисунок 76. Запись SYM (загрузочный модуль).
  7. ^ "Приложение C. Вывод ассоциированного файла данных" (PDF) . High Level Assembler for z/OS & z/VM & z/VSE - Programmer's Guide - Version 1 Release 6 (PDF) . IBM . 2015. стр. 227–275. SC26-4941-07 . Получено 2024-07-11 .
  8. ^ "Понимание и анализ отчетов о сбоях приложений iOS". Библиотека разработчиков iOS . Apple, Inc. 2018-01-08 [2009-01-29]. Техническое примечание TN2151. Архивировано из оригинала 2019-12-19 . Получено 2020-01-11 .

Внешние ссылки