gdb
パッケージを再構築すると、コンパイラインスタンスがゾンビ状態になるが追加を許可しない再現可能な状況に直面しました。
serenity ~ # ps ax | grep defunct
11351 pts/1 Z+ 0:00 [x86_64-pc-linux] <defunct>
21838 pts/5 S+ 0:00 grep --colour=auto defunct
serenity ~ # gdb -p 11351
GNU gdb (Gentoo 7.10.1 vanilla) 7.10.1
[snip]
Attaching to process 11351
warning: process 11351 is a zombie - the process has already terminated
ptrace: Operation not permitted.
(gdb)
この問題問題があることを示しますproc.sys.kernel.yama.ptrace_scope
。あるいは、ルートではありませんが、sysctlが私のシステムに存在しない可能性があります。はいルートとして実行:
serenity ~ # sysctl -a | grep ptrace
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp4s0.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
serenity ~ # whoami
root
serenity ~ #
ちなみに私のカーネルバージョンは4.9.16-gentoo
。
答え1
質問の結果に記載されているように、ゾンビプロセスは実行が完了したプロセスなので、gdbを使用して接続できません。これは、そのプロセスやリソースがないカーネルプロセステーブルのエントリにすぎないため、gdbは何も添付できません。
このプロセステーブルエントリが存在する唯一の理由(ゾンビとして表示)は、終了ステータスを読み取ることです。