Утилита elcoredump-reader

Утилита elcoredump-reader предназначена для анализа и просмотра содержимого аварийного дампа, сгенерированного с включенной переменной среды ELCORE_DUMP.

Утилита elcoredump-reader устанавливается в Buildroot опцией BR2_ELCORE50_DUMP и доступна в Linux на отладочном модуле по имени.

Формат запуска утилиты elcoredump-reader:

elcoredump-reader -v <coredump file> [options]

Опции утилиты

  • -h, --help – Показать эту справку

  • -v, --viewdump – Путь до core dump файла (Обязательная опция)

  • -e, --elf – Путь до elf файла (Опционально, читается из core dump)

  • -f, --file – Путь до файла с командами

  • -c, --command – Запуск одиночной команды и завершение

  • -w, --read-width – Ширина значения, читаемого командой read, в байтах. Допустимые значения: 2, 4, 8. По умолчанию: 8. В интерактивном режиме изменяется командой width.

Для запуска утилиты необходимо указать опцию --viewdump и передать в ней путь до core dump файла который требуется проанализировать. Например:

elcoredump-reader -v coredump-elcore1-_elcore_main_wrapper-9c03fffb

Для кернелов, запущенных с помощью elcorecl-run, утилита автоматически прочитает путь до elf файла из аргументов, которые были переданы в elf и сохранены в core dump файле. Для остальных случаев необходимо использовать опцию --elf для явного указания пути до elf файла.

Утилита поддерживает автоматическое исполнение команд, прочитанных из текстового файла. Для этого на каждой строке файла помещается отдельная команда, а сам файл передается в утилиту опцией --file.

Опцией --command доступен запуск утилиты с выполнением одной команды и завершение.

Опции --file и --command взаимоисключающие. Если ни одна из них не указана, то утилита запускается в интерактивном режиме.

Список поддерживаемых команд

  • bt — Отображает стек вывозов, приведший к аварийному завершению.

  • st — Отображает содержимое стека. Если стек пуст (задача упала до того, как был создан кадр стека), выводится Stack is empty.

  • kargs — Отображает аргументы, переданные elf.

  • opts — Отображает возможные опции отображания стека вызовов. Устанавливается командой setopt. Доступные опции:

    • hex,x — Если включено, то значения аргументов функции отображаются в 16-ричном формате.

    • raw,r — Если включено, то значения аргументов функции отображаются как есть, без учета типа.

    • shortpath,s — Если включено, то путь до исходного файла сокращается до его имени.

      Пример использования:

      > setopt x
      Option 'x' is set to ON
      
  • regs — Отображает состояние всех поддерживаемых регистров.

  • regs {имя регистра} [внешний индекс] [внутренний индекс] — Отображает значение указанного регистра. Некоторые регистры могут храниться в виде одно- или двумерного массивов. Внешний индекс представляет собой номер элемента массива в первом измерении, внутренний — во втором измерении.

  • regs {рег1} [индексы] {рег2} [индексы] ... — Отображает значения нескольких регистров, перечисленных через пробел, в порядке указания. Индексы массивного регистра пишутся сразу после его имени. При выводе более одного регистра каждое значение предваряется именем регистра (с индексами в круглых скобках, например rf(12) или tlbxcpt(0)(1)).

  • regs info — Отображает наименования поддерживаемых регистров и их размерности.

  • read {address} — Отображает значение памяти по указанному адресу. Адрес должен быть выровнен по текущей ширине чтения (см. команду width и опцию --read-width).

  • read {begin address} {end address} — Отображает значения памяти по указанному диапазону адресов. Оба адреса должны быть выровнены по текущей ширине чтения; шаг по диапазону также равен этой ширине.

  • read info — Отображает информацию об имеющихся в файле core dump секциях, их размер и адреса.

  • width — Отображает текущую ширину чтения команды read в байтах.

  • width {2|4|8} — Устанавливает ширину чтения команды read в байтах. Начальное значение задаётся опцией --read-width; по умолчанию — 8.

Ограничения использования

  • Если исходный elf не содержит отладочную информацию (собран без опции -g), то в стеке вызовов отображение аргументов функции, номеров строк кода будет недоступно.

  • Определение типа переменной реализовано не для всех типов и может отображаться как <untyped>.

  • Аварийный дамп содержит ограниченный набор регистров DSP (список доступных регистров выводится командой regs info).

  • Аварийный дамп не содержит:

  • Адреса DSP, выделенные в процессе работы программы с помощью системного вызова pmmap().

  • Адреса, принадлежащие некэшируемому диапазону EPort.

  • Информацию об открытых файлах.

Примечание

Файл с аварийным дампом содержит данные в несжатом виде.

Примеры использования утилиты приведены в разделе руководства Анализ аварийных дампов.