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

问题描述 投票:0回答:2

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

那么核心文件中是否有进程ID相关信息,以便我可以通过gdb或其他工具知道它?

linux process gdb coredump
2个回答
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;

问题是:哪些工具可以找到并解码这张纸条。尝试来自

elfutils
eu-readelf


0
投票

是的,使用“文件”命令。

file <core_file>

这应该告诉您什么可执行文件/命令导致核心转储。如果这不是您需要的,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.