【发布时间】:2013-08-05 18:35:26
【问题描述】:
Core dump 上的维基百科页面说
在类 Unix 系统中,核心转储通常使用标准可执行文件 图像格式:
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,也许上面的问题应该是:可以生成核心转储以使其自身可执行吗?
【问题讨论】:
-
如果执行核心转储,您会期待什么结果?
-
我相信(但不确定)核心转储也包含来自原始可执行文件的机器指令,因为它们是进程内存映像的一部分。如果是这样,我希望它能够运行这些指令。我完全不清楚这是否会发生,如果会发生,它是否会重新开始,或者会尝试从存储的状态继续执行(并且可能再次崩溃),因此是个问题。
-
@WumpusQ.Wumbley 谢谢,这正是我希望从中学到的有趣的东西。
undump似乎需要原始可执行文件和核心转储,所以看起来核心转储只有数据,没有可执行代码? -
核心转储是否包含文本段取决于一些配置选项。例如,请参阅 man7.org/linux/man-pages/man5/core.5.html 中的
coredump_filter部分。我认为传统的 unix 行为是包含它,因此核心转储将拥有一切。假设用户能够找到可执行文件并将其与核心文件配对,则省略它以使核心转储更便宜,这是最近的发展。但是找不到任何证据来支持我的回忆。
标签: linux unix executable coredump executable-format