使用 lldb 分析 Dotnet 核心傾印檔案
查詢服務資訊
使用 journalctl 查詢服務 Log
1 | journalctl -r --identifier=[服務的identifier] --since "2 minute ago" |
取得系統產生的傾印檔案
安裝 apport
1 | sudo apt install apport |
進入目錄 /var/crash
搜尋核心傾印檔案,之後使用 apport 解壓縮
1 | apport-unpack [核心傾印檔案].crash [解壓縮目錄] |
使用 ProcDump 產生傾印檔案
安裝 ProcDump
1 | sudo apt install procdump |
產生傾印檔案至服務工作目錄
1 | sudo procdump [服務PID] |
當目標進程 CPU 或記憶體使用量達到特定臨界值或低於限制值時
1 | sudo procdump -c [CPU使用率] -m [記憶體使用MB數] [服務PID] |
當目標進程收到特定訊號時
1 | sudo procdump -sig [Linux 信號] [服務PID] |
安裝相關 Dotnet 工具加強 lldb 偵錯
安裝 dotnet-symbol 導出傾印檔案的符號
1 | dotnet tool install -g dotnet-symbol |
導出傾印檔案的符號
1 | dotnet-symbol ~/dumps/dotnet/CoreDump -o ~/dumps/symbols --host-only |
安裝 SOS 擴充偵錯工具功能
1 | dotnet tool install -g dotnet-sos |
使用 lldb 偵錯
安裝 lldb
1 | sudo apt-get install lldb |
使用 lldb 分析核心傾印檔案
1 | lldb --core ~/dumps/dotnet/CoreDump |
在 lldb 中載入導入傾印檔案的符號
1 | setsymbolserver -directory ~/dumps/symbols |
在 lldb 中常用命令
1 | 語法資訊: help |