1、 在程序中设置线程名,并显示线程名和线程ID,便于调试
添加头文件
#include “sys/prctl.h”
#include “sys/syscall.h”
线程主函数的开始处,放在主循环的外面,避免多次显示
char tname[16];
memset(tname, 0, sizeof(tname));
prctl(PR_SET_NAME, (unsigned long)"tcp_modbustcp"); //设置线程名,最大15个字节
prctl(PR_GET_NAME, (unsigned long)tname);
printf("%s - Thread tid=%d tname=%s\n", __PRETTY_FUNCTION__, (int)syscall(__NR_gettid), tname);
另一种设置线程名字的ID为调用函数:pthread_setname_np(pthread_t thread, const char *name)
2、 通过top命令找到高CPU占用率进程ID
3、 执行以下命令,执行后显示格式为线程ID,线程名,用户时间和内核时间
awk '{print $1,$2,$14,$15}' /proc/[pid]/task/*/stat
等待5秒钟后,重复执行以上命令,比较两次用户时间和内核时间的差值,大的为高CPU占用率线程
4.要让top输出某个特定进程pid并检查该进程内运行的线程状况:
$ top -H -p pid