c++ - 从堆栈转储和 .elf 文件中提取 FreeRTOS/ARM/C++ 堆栈跟踪的工具?

标签 c++ arm elf freertos cortex-m

我有一个运行 FreeRTOS 的 ARM Cortex-M4 嵌入式系统。我已经实现了一个崩溃日志转储机制,该机制在发生 fatal error (例如被零除、空指针、地址错误、无效指令或断言)时将文件写入存储设备。在这个文件中,除其他外,我写了异常发生时堆栈的内容。

该系统捕获现场发生的崩溃,因此我的想法是分析返回给我的崩溃并尽我所能确定问题的根源。我可以轻松地将日志连接到编译该版本代码时生成的 .elf。我只需要一种解析它的方法。

我假设已经有可以做到这一点的工具(我不是第一个这样做的人),但我很难在 The Series of Tubes(tm) 上找到符合要求的东西。

是否有一个很好的起点来创建一个可以从编译中解析 .elf 并跟踪堆栈转储以创建此类报告的工具?

最佳答案

为了其他遇到此问题的人的利益,这就是我正在做的事情:

Google 有一个名为“breakpad”的工具,可以解析“minidump”格式的 .elf 和 crashlog 文件,该工具最初由 Microsoft 创建并由 Google 为 Chrome 改编。

我正在编写一个工具将我的堆栈跟踪转换为小型转储格式,希望使用 breakpad 工具来分析我的崩溃日志。

这是 breakpad 的链接:https://github.com/google/breakpad/blob/master/docs/getting_started_with_breakpad.md

关于c++ - 从堆栈转储和 .elf 文件中提取 FreeRTOS/ARM/C++ 堆栈跟踪的工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665991/

相关文章:

c++ - 模板函数中的静态变量似乎不是模板实例所独有的

android - ARM EABI v7a系统镜像在android中有什么用?

android - GCC 发出 ARM idiv 指令(续)

c - 为什么对象 (ELF) 文件中没有堆栈段?

c++ - 如何从 boost::spirit::lex 标记确定行/列号?

c++ - 动态字符串数组,编译错误

linux-kernel - 为什么我在运行 readelf -s 时得到这个输出

c - 在C中读取ELF文件的正确方法

c++ - 谷歌测试 - 课前

arm - 带有可重定位代码的静态局部变量的问题