【发布时间】:2020-06-14 14:14:03
【问题描述】:
我想从核心转储中检索可执行文件,并且任何用于获取此信息的 linux 包的输出都应在其输出中包含 execfn。
到目前为止,我尝试过以下几点:
$ file kms
kms: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from '/test', real uid: 1000440000, effective uid: 1000440000, real gid: 0, effective gid: 0, execfn: '/test', platform: 'x86_64'
file 命令仅适用于特定内核,它不是通用解决方案,因为某些内核转储会提供以下输出。
$ file ss
ss: ELF 64-bit LSB core file x86-64, version 1 (SYSV), too many program header sections (6841)
gdb 命令不适用于所有核心转储以相同的方式。使用 gdb 命令的输出不一致。 gdb 命令接收到的某些核心转储的输出与strings 命令不同。
$gdb kms
Core was generated by `/test'.
我什至尝试过 strings 包,我认为它提供了正确的输出,但格式不包含 execfn 以便在我的解决方案中使用它
$ strings kms | grep ^/ | tail -1
/test
任何人都可以建议任何 linux 软件包,它可以帮助我从核心转储中检索可执行文件,其中包含 execfn 在它的输出中。
【问题讨论】:
-
你问过你的 Linux 电脑的系统管理员了吗?
-
请在您的问题中提供一些minimal reproducible example 并提供更多详细信息。
-
使用
kill -11 PID创建标准核心转储。 PID 可以是我们假设崩溃的 docker 容器。但奇怪的是,上述使用file包的解决方案适用于某些内核,而不适用于其他内核。感谢@BaileStarynkevitch 的投入。
标签: linux executable rhel coredump