我有一个运行8个独立线程的应用程序,通过围绕Pthread的Wrapper类生成。所有线程都在无限循环中运行,每个循环时间为1秒。从主线程(Main Function,也在无限while循环中运行),我想监视线程状态是否由于某种原因线程被阻塞。有没有办法通过系统调用来监视线程状态?
答案 0 :(得分:0)
GDB是最好的选择,
使用以下命令将gdb附加到正在运行的进程
gdb -p "pid"
info threads
这将显示应用程序中的所有线程和每个线程的状态
答案 1 :(得分:0)
您可以访问proc文件系统中的进程状态信息。使用线程的PID,您可以在/proc/[PID]/status
状态文件的内容如下所示:
ubuntu@ip-172-30-1-159:/proc/1151$ cat status
Name: systemd-logind
State: S (sleeping)
Tgid: 1151
Ngid: 0
Pid: 1151
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
...