Core dump上的Wikipedia页面上说



这是否意味着核心转储本身可以执行?如果没有,为什么不呢?

编辑:由于@ WumpusQ.Wumbley在评论中提到了coredump_filter,也许上面的问题应该是:可以生成一个核心转储,使其可以独立执行吗?

最佳答案

在较旧的unix变体中,默认情况下在核心转储中包括文本和数据,但它也以a.out格式提供,而不是ELF。今天的默认行为(肯定是Linux,对于BSD变体,Solaris等不是100%肯定)是使ELF格式的核心转储没有文本部分,但是可以更改该行为。
但是,没有任何帮助,在任何情况下都无法直接执行核心转储。这样做的原因是,一个简单的核心文件缺少两件事。一个是入口点,另一个是将CPU状态恢复到转储发生时或即将发生转储之前的状态的代码(默认情况下,文本部分也缺失)。
在AIX中曾经有一个名为undump的实用程序,但是我不知道发生了什么。据我所知,它在任何标准Linux发行版中都不存在。如上所述(@WumpusQ),也尝试过上述注释中提到的Linux类似项目,但是该项目尚未完成,也无法将CPU状态还原到原始状态。但是,在某些特定的调试情况下,它仍然足够好。
还值得一提的是,还有其他不能执行的ELF格式的文件,它们也不是核心文件。例如目标文件(编译器输出)和.so(共享对象)文件。这些地址在运行之前需要链接阶段来解析外部地址。

关于linux - 核心转储本身可以执行吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18051631/

10-12 21:55