Linux中國

用 coredumpctl 更好地記錄 bug

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

從使用 coredumpctl 開始

大多數 Fedora 系統使用自動錯誤報告工具(ABRT)來自動捕獲崩潰文件並記錄 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 運行該命令以安裝:

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。無論哪種方式,你現在可以向開發人員提供更多的幫助來解決問題。

作者簡介:

Paul W. Frields

Paul W. Frields 自 1997 年以來一直是 Linux 用戶和愛好者,並於 2003 年在 Fedora 發布不久後加入 Fedora。他是 Fedora 項目委員會的創始成員之一,從事文檔、網站發布、宣傳、工具鏈開發和維護軟體。他於 2008 年 2 月至 2010 年 7 月加入 Red Hat,擔任 Fedora 項目負責人,現任紅帽公司工程部經理。他目前和妻子和兩個孩子住在弗吉尼亞州。

via: https://fedoramagazine.org/file-better-bugs-coredumpctl/

作者:Paul W. Frields 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國