从核心转储中获取创建时间

时间:2012-05-24 14:19:30

标签: c++ unix solaris core coredump

我正在开发一个c ++应用程序。 我从客户端获得了一些核心文件,他说这些文件是现在生成的,但是不愿意说它们是如何生成的以及他们生成它们所做的工作。

我怀疑他是错的,可能是他给了我很久以前产生的转储。

有什么方法可以获得文件的实际创建时间吗?

我怀疑这些文件可能是在其他服务器上创建的,而且他已经转移了这些文件。 任何人都会帮忙。

如果它不在核心文件中,可能是Unix有一些方法可以知道当前服务器或其他服务器中文件的实际创建时间。

请帮助。

1 个答案:

答案 0 :(得分:3)

核心文件的创建时间不会以Solaris中的core(4)格式显示。

但是,通过查看核心的NOTES部分(libelf to the rescue?),您可以做几件事。有关详细信息,请参阅core(4)

首先使用NOTES找到note0段名称(可能是note1或(更有可能)objdump -x core,没有前导点)

处理开始时间

NT_PSINFO条目包含psinfo_t(请参阅<sys/procfs.h>),其成员为pr_start。这是该过程的开始时间。

区域名

同样,生成核心的zonename位于NT_ZONENAME条目中。

由于这是char *一种快速而肮脏的方法,在不解析段的情况下执行此操作,只需转储'n'grep:

objdump -s -j note1 core | grep ...

elfdump -n...听起来很有用,但我无法解决这个问题。)