У меня есть встроенная система ARM Cortex-M4 под управлением FreeRTOS. Я реализовал механизм дампа журнала сбоя, который записывает файл на запоминающее устройство в случае фатальной ошибки, такой как деление на ноль, нулевой указатель, адресные ошибки, недопустимая инструкция или утверждения. В этом файле я, помимо прочего, записываю содержимое стека во время исключения.
Эта система фиксирует сбои, которые происходят в полевых условиях, поэтому идея состоит в том, чтобы проанализировать сбои, которые мне возвращаются, и определить источник проблемы как можно лучше. Я могу легко подключить журнал к .elf, который был сгенерирован, когда была скомпилирована эта версия кода. Мне просто нужен способ разобрать это.
Я предполагаю, что есть инструменты, которые могут сделать это уже (я не могу быть первым, кто сделает это), но у меня возникают проблемы с поиском чего-то в серии трубок ™, которое отвечает всем требованиям.
Есть ли хорошая отправная точка для создания инструмента, который может анализировать .elf из компиляции и следовать дампу стека для создания такого отчета?
В интересах кого-то еще с этой проблемой вот что я делаю:
У Google есть инструмент под названием «breakpad», который может анализировать файлы .elf и crashlog в формате «minidump», который был изначально создан Microsoft и адаптирован Google для Chrome.
Я пишу инструмент для преобразования трассировок моего стека в формат мини-дампов, в надежде использовать инструментальные панели для анализа журналов сбоев.
Вот ссылка на Breakpad: https://github.com/google/breakpad/blob/master/docs/getting_started_with_breakpad.md
Других решений пока нет …