gpt4 book ai didi

linux - 核心转储本身是否可执行?

转载 作者:IT王子 更新时间:2023-10-29 00:49:46 28 4
gpt4 key购买 nike

Core dump 上的维基百科页面说

In Unix-like systems, core dumps generally use the standard executable image-format:

a.out in older versions of Unix,
ELF in modern Linux, System V, Solaris, and BSD systems,
Mach-O in OS X, etc.

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

编辑:因为@WumpusQ.Wumbley 在评论中提到了 coredump_filter,也许上面的问题应该是:可以生成一个核心转储,这样它就可以被执行本身?

最佳答案

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

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com