Инструменты для извлечения трассировки стека FreeRTOS / ARM / C ++ из дампа стека и файла .elf?

У меня есть встроенная система ARM Cortex-M4 под управлением FreeRTOS. Я реализовал механизм дампа журнала сбоя, который записывает файл на запоминающее устройство в случае фатальной ошибки, такой как деление на ноль, нулевой указатель, адресные ошибки, недопустимая инструкция или утверждения. В этом файле я, помимо прочего, записываю содержимое стека во время исключения.

Эта система фиксирует сбои, которые происходят в полевых условиях, поэтому идея состоит в том, чтобы проанализировать сбои, которые мне возвращаются, и определить источник проблемы как можно лучше. Я могу легко подключить журнал к .elf, который был сгенерирован, когда была скомпилирована эта версия кода. Мне просто нужен способ разобрать это.

Я предполагаю, что есть инструменты, которые могут сделать это уже (я не могу быть первым, кто сделает это), но у меня возникают проблемы с поиском чего-то в серии трубок ™, которое отвечает всем требованиям.

Есть ли хорошая отправная точка для создания инструмента, который может анализировать .elf из компиляции и следовать дампу стека для создания такого отчета?

2

Решение

В интересах кого-то еще с этой проблемой вот что я делаю:

У Google есть инструмент под названием «breakpad», который может анализировать файлы .elf и crashlog в формате «minidump», который был изначально создан Microsoft и адаптирован Google для Chrome.

Я пишу инструмент для преобразования трассировок моего стека в формат мини-дампов, в надежде использовать инструментальные панели для анализа журналов сбоев.

Вот ссылка на Breakpad: https://github.com/google/breakpad/blob/master/docs/getting_started_with_breakpad.md

1

Другие решения

Других решений пока нет …