手动生成 ELF 核心转储文件

3
我希望手动生成ELF Core Dump文件。
我有程序的RAM转储,还可以检索寄存器信息等。
使用这些数据,我想构建一个ELF Core Dump文件,类似于Linux内核在程序崩溃时生成的那些文件,目标是使用特定于我的平台的GDB分析这个Core Dump。
我一直在寻找Core Dump规范或详细格式,但没有找到我想要的内容:
- 我的Core Dump文件需要哪些部分? - 它们如何组织进ELF容器中? - 我怎样才能从具有二进制RAM转储(+寄存器值)的情况下得到类似Core Dump文件的文件。
最好用C语言实现,我想我可以使用libelf库来帮助我构建该文件,但是我没有找到有关在其中放置什么以及以哪种格式放置的相关信息,因此任何线索、链接或建议都将不胜感激。
注意:这不是关于引发异常并让内核为我完成工作的问题,我可以做到,但我确实需要手动收集RAM和寄存器数据到一个ELF Core Dump中。
谢谢!

关于这个主题的其他信息,特别是有关“Note”部分的信息,请访问https://dev59.com/gXXYa4cB1Zd3GeqP2iCI。 - d6bels
1个回答

6
我正在寻找手动生成ELF Core Dump文件的方法。 只需使用Google elf userspace coredumper,它可以完全实现这一点。
我想要构建我的核心转储,而不是直接将其实现到我的软件中。 没有现有的程序(据我所知)可以做到这一点。很可能,你需要从头开始编写一个,或者改编一些其他程序。
有两个程序可以从用户空间写入核心转储--上面提到的用户空间coredumper和GDB(通过gcore命令)。我认为改编Google coredumper会比改编GDB容易得多。
如果你决定从头开始编写一个,你仍然可以阅读Google coredumper源代码,以弄清楚你必须写入核心的内容。

谢谢,这很有帮助,但我仍想在程序崩溃后生成核心转储。这是为了解剖目的。 当程序崩溃时,我有一些机制可以转储内存和寄存器。只有在此之后(即死后),我才想生成核心转储,而不是直接将其实现到我的软件中。 - d6bels
谢谢,我想我会自己写一个! - d6bels

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接