gcore 到底好不好用一看便知
Linux 用户会很快指出,Linux 已经有一个叫 gcore 的命令,大多数 Linux 发行版都有这个命令,它的作用和 ProcDump 完全一样。你说的对。如果你从来没有使用过它,可以尝试用 gcore 来转储一个进程的核心。再次运行测试程序,然后运行 gcore,并提供 PID 作为参数: $ ./progxyz & [1]350664 $ $ $ pgrep progxyz 350664 $ $ $ gcore 350664 0x00007fefd3be2208in nanosleep ()from/lib64/libc.so.6 Saved corefile core.350664 [Inferior1(process 350664) detached] $ gcore 打印一条消息,说它已将核心文件保存到一个特定的文件中。检查当前目录,找到这个核心文件,然后再次使用 gdb 加载它: $ $ ls-l core.350664 -rw-r--r--.1 root root 356848Jun2403:34 core.350664 $ $ $ file core.350664 core.350664: ELF 64-bit LSB core file, x86-64, version 1(SYSV), SVR4-style,from'./progxyz', real uid:0, effective uid:0, real gid:0, effective gid:0, execfn:'./progxyz', platform:'x86_64' $ $ gdb-q ./progxyz ./core.350664 Reading symbols from./progxyz...(no debugging symbols found)...done. [New LWP 350664] Core was generated by `./progxyz'. #0 0x00007fefd3be2208 in nanosleep () from /lib64/libc.so.6 Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-101.el8.x86_64 (gdb) bt #0 0x00007fefd3be2208 in nanosleep () from /lib64/libc.so.6 #1 0x00007fefd3be213e in sleep () from /lib64/libc.so.6 #2 0x00000000004005f3 in main () (gdb) q $ 为了使 gcore 可以工作,你需要确保以下设置到位。首先,确保为核心文件设置了 ulimit,如果设置为 0,核心文件将不会被生成。第二,确保 /proc/sys/kernel/core_pattern 有正确的设置来指定核心模式: (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |