首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Solaris Core Dump 分析完整指南

     編輯:Java 綜合教學

核心傾印類型

  • Process Core Dump:單一進程異常終止產生,含進程記憶體、暫存器狀態。
  • System Core Dump:核心恐慌觸發,為整個 OS 記憶體映像。

進程 Core Dump 管理

觸發信號

常見 SIGSEGV(非法記憶體訪問)、SIGBUS(記憶體對齊錯誤,SPARC 架構常見)、SIGFPE(浮點異常)。

coreadm 配置

# 查看現狀
coreadm
# 設定 per-process core 檔名模式
coreadm -i core.%f.%p
# 啟用 global core 並指定目錄
coreadm -g /globalcore/core.%f.%p -e global
# 完整保存所有段(含符號表)
coreadm -G all -I all

配置持久化於 /etc/coreadm.conf,由 SMF 服務 svc:/system/coreadm:default 管理。

手動產生

gcore <PID>          # 對存活進程產生 core
# 或使用 AppCrash 自動收集診斷資訊

分析工具

  • pstack:快速查看多執行緒堆疊,符號表未剝離可解決 50%+ 問題。
  • dbx(Sun Studio):原始碼級除錯,需編譯加 -g,可定位到源碼行號。
  • mdb:底層組合語言除錯,適合核心/驅動開發者。
# pstack 範例
pstack core.2580
# dbx 範例
/opt/SUNWspro/bin/dbx tServer core

系統 Core Dump 管理

產生流程

  1. 核心偵測資料損壞/硬體錯誤 → panic() 中斷所有進程。
  2. 將記憶體寫入 dump device(預設 swap 分區)。
  3. 重啟時 savecore 將 dump device 內容存至 /var/crash/<hostname>/,產生 unix.<N>(符號表)與 vmcore.<N>(資料)。

dumpadm 配置

# 設定專用 dump 裝置與儲存目錄
dumpadm -d /dump -s /savecore
# 查看配置
dumpadm

配置於 /etc/dumpadm.conf,SMF 服務 svc:/system/dumpadm:default。

手動觸發系統 Core

  • reboot -d:重啟並強制產生。
  • savecore -L:活體系統快照(需非 swap dump device)。
  • SPARC:Stop-A 進 OBP → sync。
  • x86:載入 kmdb(Grub 加 -k),主控台 F1-A 斷入 → $<systemdump。
  • 死人定時器:/etc/system 加 set snooping=1,50 秒無 lbolt 更新觸發 panic。

分析建議

  1. 檢查主控台與 /var/adm/messages。
  2. strings vmcore.<N> 擷取 ASCII 線索。
  3. 上傳 SunSolve 或使用 Solaris Crash Analysis Tool (CAT) 深度分析。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved