我的系统中生成了一些核心文件,但这些核心文件的后缀只有时间戳,没有进程ID信息。
所以在核心文件中有任何进程id相关信息,以便我可以从gdb或其他工具中知道它吗?
答案 0 :(得分:1)
所以核心文件中有任何与进程id相关的信息
当然。
在core
文件中,有一组ELF注释。您要查找的注释类型为NT_PRPSINFO
,它包含您想要的pr_pid
(以及其他内容):
typedef struct prpsinfo { /* Information about process */
unsigned char pr_state; /* Numeric process state */
char pr_sname; /* Char for pr_state */
unsigned char pr_zomb; /* Zombie */
signed char pr_nice; /* Nice val */
unsigned long pr_flag; /* Flags */
uint32_t pr_uid; /* User ID */
uint32_t pr_gid; /* Group ID */
pid_t pr_pid; /* Process ID */
pid_t pr_ppid; /* Parent's process ID */
pid_t pr_pgrp; /* Group ID */
pid_t pr_sid; /* Session ID */
char pr_fname[16]; /* Filename of executable */
char pr_psargs[80]; /* Initial part of arg list */
} prpsinfo;
问题是:哪个工具可以找到并解码此注释。从elfutils尝试eu-readelf
。
答案 1 :(得分:-1)
是的,使用“file”命令。
file <core_file>
那应该告诉你什么可执行文件/命令导致核心转储。如果那不是您需要的,请告诉我。