为什么文件实用程序告诉我有 "too many program headers"?

Why is the file utility telling me there are "too many program headers"?

我想分析核心转储。 我正要使用 gdb,但作为健全性检查我做的第一件事是在核心上使用 file,这给了我:

ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), too many program headers (489)

现在,其中大部分都非常有道理。但是 "too many" 暗示 file 正在尝试做某事,并且由于某种原因无法完成其操作。告诉我 file 正在寻找的东西会有所帮助。

它试图确定什么,为什么(确切地)尝试失败了?

file 的最新版本添加了一些额外的参数来限制它正在读取的 coredump 的数量。默认情况下,如果它发现有超过 128 个 ELF 程序头,它甚至不会在转储中查找程序名称。

TL;DR

您应该可以通过调用 file -Pelf_phnum=10000 core

来解决这个问题