如何快速查看进程/子线程堆栈

背景:分析现网问题时,有时需要快速查看某个进程/子线程堆栈调用,便于进一步分析问题,现提供几种不同获取进程堆栈方法。

实现方法:
1.使用gdb attach 调试进程,使用gdb相关cmd调试进程

# gdb -p pid
进入gdb后,可通过
(gdb)bt 查看主进程堆栈
(gdb)info thread 查看线程
(gdb)thread threadid attach 线程
(gdb)bt

2.通过pstack/gstack直接打印堆栈信息

# pstack pid
直接打印堆栈信息,这种方法直接了当

3.通过gcore输出进程coredump文件

# gcore pid
# gdb cmd core
gdb调试进程静态coredump文件

4.strace打印堆栈信息

# strace -f -p pid
动态交互打印进程及其子线程的堆栈信息

5.查看proc文件的stack

# cat /proc/pid/stack 线程堆栈
# cat /proc/pid/proc/pid/stack 子线程堆栈 
该方法堆栈信息较少

实际使用中,可以根据实际情况灵活选择不同的方法。

你可能感兴趣的:(云计算,linux内核相关,学习,运维分析工具,云计算,虚拟化,linux性能分析)