Linux上開發時,一般進程運行結果和預期不符會通過打log記錄日誌分析運行過程,但有時log日誌不全,再者一些大型系統長期運行不會過多的記錄日誌,一般可以設置core文件配置,以便進程在異常掛掉後自動記錄棧信息,但大部分情況下進程是在運行過程中出現問題,這時就需要抓取運行時棧信息,結合日誌進行分析了。
1. 主動kill進程生成core文件分析(前提是已經配置好生成core的配置:ulimit)
查詢到運行進程pid,然後使用kill -11 <pid>向進程發送退出信號(段異常),生成core文件後使用gdb調取棧信息分析。
下面是linux信號值,一般發送默認動作爲core的信號都可以生成core文件,其他則不生成。
2. 直接通過gstack命令抓取,不需要停掉目標進程。
參數:gstack <pid>