Linux上开发时,一般进程运行结果和预期不符会通过打log记录日志分析运行过程,但有时log日志不全,再者一些大型系统长期运行不会过多的记录日志,一般可以设置core文件配置,以便进程在异常挂掉后自动记录栈信息,但大部分情况下进程是在运行过程中出现问题,这时就需要抓取运行时栈信息,结合日志进行分析了。
1. 主动kill进程生成core文件分析(前提是已经配置好生成core的配置:ulimit)
查询到运行进程pid,然后使用kill -11
向进程发送退出信号(段异常),生成core文件后使用gdb调取栈信息分析。
下面是linux信号值,一般发送默认动作为core的信号都可以生成core文件,其他则不生成。
2. 直接通过gstack命令抓取,不需要停掉目标进程。
参数:gstack