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