gpt4 book ai didi

process - 如何知道哪个进程(stat : T) is attached by gdb?

转载 作者:行者123 更新时间:2023-12-04 16:48:57 26 4
gpt4 key购买 nike

当gdb附加一个进程时,该进程的状态为“T”,例如:

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是不是调试?或者我可以知道gdb附加了哪个进程(27833)

pstree -p 27833 ---显示gdb(27833)

另一个问题:如何知道哪个gdb(PID)附加了一个进程(stat:T)?
在大多数情况下,我不是调试过程的专家。

最佳答案

T输出中的ps表示“being ptrace()d”。因此该过程(26995)被某种事物跟踪。多数情况是GDBstrace

因此,是的,如果您知道自己仅在运行GDB而不是strace,并且看到单个进程处于T状态,则说明您正在调试该进程。

您也可以询问GDB它在调试哪个进程:

(gdb) info process
(gdb) info inferior

更新
正如Matthew Slattery正确指出的那样, T只是意味着该进程已停止,而并不意味着它正在 ptrace()d

因此,更好的解决方案是这样做:
 grep '^TracerPid:' /proc/*/status | grep -v ':.0'
/proc/7657/status:TracerPid: 31069

从上面的输出中,您可以知道进程7657被进程31069跟踪。这将回答“哪个进程正在调试”和“哪个调试器正在调试什么”。

关于process - 如何知道哪个进程(stat : T) is attached by gdb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6659308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com