C ++:Linux上的pthread状态监控

时间:2017-03-21 06:12:36

标签: multithreading pthreads

我有一个运行8个独立线程的应用程序,通过围绕Pthread的Wrapper类生成。所有线程都在无限循环中运行,每个循环时间为1秒。从主线程(Main Function,也在无限while循环中运行),我想监视线程状态是否由于某种原因线程被阻塞。有没有办法通过系统调用来监视线程状态?

2 个答案:

答案 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
...