首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >核心转储文件格式

核心转储文件格式
EN

Stack Overflow用户
提问于 2011-07-07 03:59:17
回答 2查看 25.6K关注 0票数 6

我已经为一个项目编写了一个自定义的核心转储处理应用程序。我更改了'/proc/sys/kernel/core_pattern‘来调用我的转储处理程序,并成功调用了它。

现在的问题是将核心转储保存到gdb可以识别的文件中。目前,我的转储处理程序从STDIN读取转储并将其保存到文件'core.dump‘中。当我试图将这个核心转储加载到gdb中时,它给出了错误:

(gdb) ... is not a core dump: File format not recognized

当我在标准核心转储上运行'file‘命令时,它给出了以下结果:

core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './dump_gen'

对于自定义生成的转储,'file‘提供以下内容:

core.dump: data

请任何人可以帮助我如何写核心转储正确,以便它可以在gdb中使用。

附言:我不想使用标准的核心转储文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-07 04:13:25

我认为您不知何故没有将所有数据写入到核心文件中。

创建一个简单的脚本,使其可执行,并将核心模式设置为脚本。

代码语言:javascript
运行
复制
#!/bin/sh
cat > /tmp/core.$$

现在生成一个核心文件(例如,运行sleep 1243并按ctrl+\),它应该可以工作。

我刚刚在我的系统上测试了它,它工作起来没有任何问题。

票数 5
EN

Stack Overflow用户

发布于 2011-07-07 04:04:03

首先要检查的是Elf头标志,它指明了它是什么类型的文件。它有四个值-共享对象、未链接对象、可执行文件和核心转储。这很可能是导致gdb错误的原因。

此外,尝试使用objdump检查它-它可以拆分整个ELF文件,以分析其明显不好的部分。

你可以在https://refspecs.linuxbase.org/elf/elf.pdf上找到ELF规范

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6602176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档