1.用top命令查看哪个进程占用CPU高
top
2.用top -H -p pid命令查看进程内各个线程占用的CPU百分比
top -H -p 56457
3.使用gstack命令查看进程中各线程的函数调用栈
查找线程ID56457,由于函数栈会暴露函数细节,因此只显示了三个函数桢,进程ID56457只有一个线程
4.使用gcore命令转存进程映像及内存上下文
# gcore 56457
该命令生成core文件core.56457
5.用strace命令查看系统调用和花费的时间
#strace -T -r -c -p 56457
#strace -o output.txt -T -tt -e trace=all -p $pid
PS: 上面的含义是 跟踪56457进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
strace -o output.txt -T -tt -e trace=all -p 56457
6.用gdb调试core文件,并线程切换到对应线程
gcore和实际的core dump时产生的core文件几乎一样,只是不能用gdb进行某些动态调试
(gdb) gdb gateway core.56457
(gdb) where
#0 0x40000410 in __kernel_vsyscall ()