【发布时间】:2014-11-12 22:02:48
【问题描述】:
我想从具有大量内存占用的崩溃应用程序中提取堆栈跟踪。理想情况下,用户无需等待整个核心转储写入磁盘。
我目前的想法是在/proc/sys/kernel/core_pattern 安装一个 coredump 挂钩,它将通过标准输入解析传入的 coredump 并仅提取堆栈跟踪。但是,在内存中创建 coredump 的完整副本是不切实际的,因此流式方法会更好。
我是 ELF 格式 (http://en.wikipedia.org/wiki/Executable_and_Linkable_Format) 的新手,想知道它是否支持流解析器。我还没有编写任何类型的流解析器 - 我熟悉这个概念,但需要有关如何分析流能力格式的指针。
作为第一次尝试,我尝试了:
cat core | readelf -a
但是,readelf 似乎不支持来自标准输入的输入。
我也找到了这个 python elf 解析器,但乍一看它好像将整个 elf 读入内存: https://github.com/eliben/pyelftools
但是,如果需要,也许我可以将它们的实现用作流解析器的参考。
非常感谢!
【问题讨论】:
标签: parsing streaming elf crash-dumps