Утилита 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.Информацию об открытых файлах.
Примечание
Файл с аварийным дампом содержит данные в несжатом виде.
Примеры использования утилиты приведены в разделе руководства Анализ аварийных дампов.