addr2line - справочное руководство, опции, примеры команд


ИМЯ

addr2line - конвертировать адреса или символ+смещение в имена файлов и номера строк

СИНТАКСИС

addr2line [-a|--addresses] [-b bfdname|--target=bfdname] [-C|--demangle[=style]] [-r|--no-recurse-limit] [-R|--recurse-limit] [-e filename|--exe=filename] [-f|--functions] [-s|--basename] [-i|--inlines] [-p|--pretty-print] [-j|--section=name] [-H|--help] [-V|--version] [addr addr ...]

ОПИСАНИЕ

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

Используемый исполняемый или перемещаемый объект указывается с помощью параметра -e. По умолчанию используется файл a.out. Используемый раздел в перемещаемом объекте указывается с помощью параметра -j.

addr2line имеет два режима работы.

В первом случае в командной строке указываются шестнадцатеричные адреса или символ+смещение, а addr2line отображает имя файла и номер строки для каждого адреса.

Во втором addr2line считывает шестнадцатеричные адреса или символ+смещение из стандартного ввода и выводит имя файла и номер строки для каждого адреса на стандартный вывод. В этом режиме addr2line может использоваться в канале для преобразования динамически выбранных адресов.

Формат вывода: FILENAME:LINENO. По умолчанию каждый входной адрес генерирует одну строку вывода.

Две опции могут генерировать дополнительные строки перед каждой строкой FILENAME:LINENO (в указанном порядке).

Если используется опция -a, то отображается строка с введенным адресом.

Если используется параметр -f, отображается строка с ИМЯ ФУНКЦИИ. Это имя функции, содержащей адрес.

Один из вариантов может генерировать дополнительные строки после строки FILENAME:LINENO.

Если используется опция -i и код по указанному адресу присутствует там из-за встраивания компилятором, то после этого выводятся дополнительные строки. Одна или две дополнительные строки (если используется опция -f) отображаются для каждой встроенной функции.

В качестве альтернативы, если используется опция -p, то каждый входной адрес генерирует одну длинную выходную строку, содержащую адрес, имя функции, имя файла и номер строки. Если также был использован параметр -i, то любые встроенные функции будут отображаться таким же образом, но в отдельных строках и с префиксом текста (inlined by).

Если имя файла или имя функции определить невозможно, addr2line вместо них напечатает два вопросительных знака. Если номер строки определить невозможно, addr2line напечатает 0.

Когда используется символ+смещение, +смещение является необязательным, за исключением случаев, когда символ неоднозначен с шестнадцатеричным числом. Разрешенные символы могут быть искажены или восстановлены, за исключением того, что неизмененные символы с + не допускаются.

ПАРАМЕТРЫ

Длинная и краткая формы опций, показанные здесь как альтернативы, эквивалентны.

-a
--addresses

Отображение адреса перед именем функции, информацией о номере файла и строки. Адрес печатается с префиксом 0x, чтобы его было легко идентифицировать.

-b bfdname
--target=bfdname

Укажите, что формат объектного кода для объектных файлов — bfdname.

-C
--demangle[=style]

Декодировать (demangle) низкоуровневые имена символов в имена на уровне пользователя. Помимо удаления любого начального символа подчеркивания, предваряемого системой, это делает имена функций C++ читаемыми. У разных компиляторов разные стили обработки. Необязательный аргумент стиля разборки можно использовать для выбора подходящего стиля разборки для вашего компилятора.

-e filename
--exe=filename

Укажите имя исполняемого файла, для которого должны быть переведены адреса. Файл по умолчанию — a.out.

-f
--functions

Отображение имен функций, а также информации о номере файла и строки.

-s
--basenames

Отображать только основу каждого имени файла.

-i
--inlines

Если адрес принадлежит функции, которая была встроена, также будет напечатана исходная информация для всех вложенных областей вплоть до первой невстроенной функции. Например, если main встраивает callee1, который встраивает callee2, а адрес взят из callee2, исходная информация для callee1 и main также будут напечатаны.

-j
--section

Читать смещения относительно указанного раздела вместо абсолютных адресов.

-p
--pretty-print

Сделайте вывод более удобным для человека: каждое местоположение печатается на одной строке. Если указана опция -i, строки для всех объемлющих областей начинаются с префикса (inlined by).

-r
-R
--recurse-limit
--no-recurse-limit
--recursion-limit
--no-recursion-limit

Включает или отключает ограничение на количество рекурсий, выполняемых при разборе строк. Поскольку форматы искажения имен допускают бесконечный уровень рекурсии, можно создавать строки, декодирование которых исчерпает объем стека, доступного на хост-компьютере, что вызовет сбой памяти. Ограничение пытается предотвратить это, ограничивая рекурсию до 2048 уровней вложенности. По умолчанию это ограничение включено, но его отключение может быть необходимо для упрощения действительно сложных имен. Однако обратите внимание, что если ограничение рекурсии отключено, возможно исчерпание стека, и любые сообщения об ошибках в таком событии будут отклонены. Параметр -r является синонимом параметра --no-recurse-limit. Параметр -R является синонимом параметра --recurse-limit. Обратите внимание, что эта опция эффективна, только если включена опция -C или --demangle.

  1. Чтение параметров командной строки из файла. Прочитанные параметры вставляются вместо исходного параметра @file. Если файл не существует или не может быть прочитан, параметр будет рассматриваться буквально и не будет удален. Параметры в файле разделены пробелом. Пробельный символ может быть включен в параметр, заключая весь параметр в одинарные или двойные кавычки. Любой символ (включая обратную косую черту) может быть включен путем добавления префикса символа, который должен быть включен, с обратной косой чертой. Сам файл может содержать дополнительные параметры @file; любые такие параметры будут обрабатываться рекурсивно.

СМОТРИТЕ ТАКЖЕ

Info entries for binutils.

АВТОРСКИЕ ПРАВА

Авторское право (c) 1991-2023 Free Software Foundation, Inc.

Разрешается копировать, распространять и/или изменять этот документ в соответствии с условиями лицензии GNU Free Documentation License версии 1.3 или любой более поздней версии, опубликованной Free Software Foundation; без неизменяемых разделов, без текста на передней обложке и без текста на задней обложке. Копия лицензии включена в раздел, озаглавленный Лицензия свободной документации GNU.