![Linux中如何让进程处于T(trace)状态?](https://linux22.com/image/158830/Linux%E4%B8%AD%E5%A6%82%E4%BD%95%E8%AE%A9%E8%BF%9B%E7%A8%8B%E5%A4%84%E4%BA%8ET%EF%BC%88trace%EF%BC%89%E7%8A%B6%E6%80%81%EF%BC%9F.png)
根据“可中断睡眠”状态表示什么? 有一种状态称为“T”。
我尝试运行一个 python 脚本,strace
但/proc/pid/stat
仍然显示该进程正在S
等待do_wait
( cat /proc/6145/wchan -> do_wait
)
def f():
import pdb
pdb.set_trace()
print(1)
f()
答案1
你好像跟T
混了t
。从man ps
:
T stopped by job control signal
t stopped by debugger during the tracing
无论如何,要将进程置于状态T
(已停止)、kill -STOP
其 PID,或在终端运行时按 Ctrl+Z。要将进程置于状态t
(被跟踪),请使用 ptrace 附加到该进程,但不要让它像 strace 那样继续运行。一种方法是运行gdb
,然后attach
运行它的 PID。