首頁 > 系統教程 > Linux > 主體

使用 coredumpctl 尋找並處理 BUG

PHPz
發布: 2024-02-16 09:45:18
轉載
1248 人瀏覽過

一個不幸的事實是,所有的軟體都有 bug,有些 bug 會導致系統崩潰。當它出現的時候,它經常會在磁碟上留下一個被稱為「核心轉儲」的資料檔案。該文件包含有關係統崩潰時的相關數據,可能有助於確定崩潰的原因。通常開發者要求提供 “回溯” 形式的數據,以顯示導致崩潰的指令流。開發人員可以使用它來修復 bug 以改進系統。如果系統發生了崩潰,以下是如何輕鬆產生回溯的方法。
使用 coredumpctl 查找并处理 BUG

從使用 coredumpctl 開始

#大多數 Fedora 系統使用自動錯誤報告工具(ABRT)[1]來自動擷取崩潰檔案並記錄 bug。但是,如果你停用了此服務或刪除了該軟體包,則此方法可能會有所幫助。

如果你遇到系統崩潰,請先確保你運行的是最新的軟體。更新通常包含修復程序,這些更新通常含有已經發現的會導致嚴重錯誤和崩潰的錯誤的修復。當你更新後,請嘗試重現導致錯誤的情況。

如果崩潰仍然發生,或者你已經在運行最新的軟體,那麼可以使用有用的 coredumpctl 工具。此程式可協助尋找和處理崩潰。若要查看系統上所有核心轉儲列表,請執行以下命令:

coredumpctl list
登入後複製

如果你看到比預期長的列表,請不要感到驚訝。有時系統元件在後台默默地崩潰,並自行恢復。快速尋找今天的轉儲的簡單方法是使用 -since 選項:

coredumpctl list --since=today
登入後複製

“PID” 欄位包含用於識別轉儲的進程 ID。請注意這個數字,因為你會之後再用它。或者,如果你不想記住它,使用下面的命令將它賦值給一個變數:

MYPID=<PID>
登入後複製

要查看關於核心轉儲的信息,請使用此命令(使用 $MYPID 變數或替換 PID 編號):

coredumpctl info $MYPID
登入後複製
安裝 debuginfo 套件

在核心轉儲中的資料以及原始程式碼中的指令之間調試符號轉義。這個符號數據可能相當大。與大多數使用者運行在 Fedora 系統上的軟體包不同,符號以 “debuginfo” 軟體包的形式安裝。要確定你必須安裝哪些 debuginfo 套件,請先執行以下命令:

coredumpctl gdb $MYPID
登入後複製

這可能會在螢幕上顯示大量資訊。最後一行可能會告訴你使用 dnf 安裝更多的 debuginfo 軟體包。用 sudo [2]執行該指令以安裝:

sudo dnf debuginfo-install <packages...>
登入後複製

然後再嘗試 coredumpctl gdb $MYPID 指令。 你可能需要重複執行此操作,因為其他符號會在回溯中展開。

捕獲回溯

#在偵錯器中執行以下命令以記錄資訊:

set logging file mybacktrace.txt
set logging on
登入後複製

你可能會發現關閉分頁有幫助。對於長的回溯,這可以節省時間。

set pagination off
登入後複製

現在運行回溯:

thread apply all bt full
登入後複製

現在你可以輸入 quit 來退出偵錯器。 mybacktrace.txt 包含可附加到 bug 或問題的追蹤資訊。或者,如果你正在與某人即時合作,則可以將文字上傳到 pastebin。無論哪種方式,你現在可以向開發人員提供更多的幫助來解決問題。


以上是使用 coredumpctl 尋找並處理 BUG的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!