2011-07-12 9 views
5

、プロセスのSTATのように、「T」である:上記からgdbによってどのプロセス(stat:T)がアタッチされているかを知るには?プロセスは、GDBによって取り付けられている場合

root  6507 0.0 0.0 67896 952 ?  Ss 12:01 0:00 /mytest 
root  6508 0.0 0.0 156472 7120 ?  Sl 12:01 0:00 /mytest 
root  26994 0.0 0.0 67896 956 ?  Ss 19:59 0:00 /mytest 
root  26995 0.0 0.0 156460 7116 ?  Tl 19:59 0:00 /mytest 
root  27833 0.0 0.0 97972 24564 pts/2 S+ 20:00 0:00 gdb /mytest 

、26995は、デバッグのもよいです。 26995がデバッグされているかどうかを知るにはどうすればよいですか?プロセスを知る方法(STAT:T)のことで装着されているか、私はpstreeは-p 27833 ---ショーGDBは(27833)

もう一つの問題を(27833)

GDBによって取り付けられているプロセスを知ることができますどのgdb(PID)? ほとんどの場合、私はプロセスをデバッグしている偽者ではありません。

答えて

7

psTの出力は「being ptrace()d」の略です。そのプロセス(26995)は何かによって追跡されています。何かが最も頻繁にGDB、またはstraceのいずれかです。

GDBで、straceではないことがわかっていて、T状態のプロセスが1つしかない場合は、そのプロセスをデバッグしていることがわかります。

また、それは、デバッグしているプロセス(ES)GDBを求めることができる:

(gdb) info process 
(gdb) info inferior 

更新 マシュースラッタリーが正しく指摘したように、Tをちょうどそれがptrace()dされていることをプロセスが停止している意味ではなく、 。プロセス31069.この回答の両方の「どのプロセスがデバッガ中である」と「デバッガでトレースされますが、そのプロセス7657を伝えることができ、出力以上から

grep '^TracerPid:' /proc/*/status | grep -v ':.0' 
/proc/7657/status:TracerPid: 31069 

だから、より良い解決策は、これを行うことです何をデバッグしているのですか? "

+1

デバッグである 'T'は単に「必ずしも、 "停止" を意味しますptrace()d "となります。例えば、 'sleep 10000'を試して、Ctrl-Zを押して、' ps ux |グレープスリープ '。 –

+0

ありがとう、あなたはかなり正しいです。回答が更新されました。 –

+0

GDB 7.8では、 'info process'はもう存在しません。 'info proc'または' info program'はPIDを表示します。 –

0

ps axf出力からこの情報を見つけることができます。ここで

1357 ?  Ss  0:00 /usr/sbin/sshd 
1935 ?  Ss  0:00 \_ sshd: [email protected]/0 
1994 pts/0 Ss  0:00  \_ -bash 
2237 pts/0 T  0:00   \_ gdb /bin/ls 
2242 pts/0 T  0:00   | \_ /bin/ls 
2243 pts/0 R+  0:00   \_ ps axf 

プロセス2242は、gdbのプロセス2237.

5

/procファイルシステムによってdebugedされているのLinuxののtelnetデザインです。多くのプロセスリアルタイム情報は、/proc/{PID}/から見つけることができます。

もう1つの質問:プロセス(stat:T)を知る方法は、 gdb(PID)が添付されていますか?ほとんどの場合、私は プロセスをデバッグする人ではありません。

この質問では、/ proc/{PID}/statusファイルを調べて回答を得ることができます。

root  14616 0.0 0.0 36152 908 ?  Ss Jun28 0:00 /mytest 
root  14617 0.5 0.0 106192 7648 ?  Sl Jun28 112:45 /mytest 
tachyon 2683 0.0 0.0 36132 1008 ?  Ss 11:22 0:00 /mytest 
tachyon 4276 0.0 0.0 76152 20728 pts/42 S+ 11:22 0:00 gdb /mytest 
tachyon 2684 0.0 0.0 106136 7140 ?  Tl 11:22 0:00 /mytest 

host1-8>猫の/ proc/2684 /ステータス

Name: mytest 
State: T (tracing stop) 
SleepAVG:  88% 
Tgid: 2684 
Pid: 2684 
PPid: 2683 
TracerPid:  4276 
....... 

したがって、我々は2684年を知っているが、プロセスによって4276.

関連する問題