linux:有没有办法找出哪个进程生成了核心文件?

Hin*_*sum 0 c++ linux gdb process core

我的系统中生成了一些核心文件,但这些核心文件的后缀只有时间戳,没有进程 ID 信息。

那么核心文件中是否有任何与进程ID相关的信息,以便我可以从gdb或其他工具中了解它?

Emp*_*ian 5

所以它在核心文件中有任何与进程 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;
Run Code Online (Sandbox Code Playgroud)

问题是:哪些工具可以找到并解码此笔记。eu-readelfelfutils尝试。