在 Linux 開發工具世界中,除錯領域長期以來一直由 GDB 和 LLDB 主導——它們功能強大但經常因使用者體驗受到批評。一個新的競爭者已經出現在這個領域:'nnd',一個從零開始構建的偵錯程式,承諾比傳統選項提供更好的速度和可用性。
Linux 除錯的全新方法
新偵錯程式 'nnd' 從 RemedyBG 汲取靈感,但作為 Linux 的終端使用者介面(TUI)偵錯程式開創了自己的道路。它的與眾不同之處在於專注於速度和響應性——這是現有工具的常見痛點。與 GDB 或 LLDB 不同,'nnd' 幾乎完全從頭實現,使其即使在處理開發者測試過的 2.5 GB 大小的 ClickHouse 等大型可執行檔案時也能最佳化效能。
社群反饋突顯了該工具如何解決長期以來除錯工作流程中的挫折。其最受讚賞的特性之一是為通常導致偵錯程式凍結或掛起的任務實現了進度條和非同步操作。
「我希望這種功能更普遍,特別是進度條這個功能。」
這種情緒與許多開發者的經歷產生共鳴,他們曾體驗過等待除錯符號載入而沒有任何進度指示的挫折感。另一位評論者提到,他們之前的工作涉及在啟動時開啟約 200 個 DLL 外掛,這會在 DWARF 符號索引期間完全掛起 GDB。
有限但專注的功能集
雖然 'nnd' 顯示出前景,但它也有明確的侷限性。目前它僅支援 x86 64 位架構的 Linux,並且專門適用於 C++ 或 Rust 等原生程式碼(不支援 Java 或 Python 等解釋型語言)。該偵錯程式還缺乏遠端除錯功能(儘管它可以透過 SSH 工作),不跟蹤派生程序,也沒有記錄/回放功能。
儘管有這些限制,這種專注的方法似乎正在贏得粉絲。幾位評論者將其與他們懷念的舊工具進行了比較,一位指出它讓他們想起了 CodeView,我一直希望能重新擁有它,不,一大堆 Emacs 或 vim 外掛並不等同於它。
nnd 偵錯程式關鍵特性
- 快速且響應靈敏的 TUI(終端使用者介面)
- 不基於 GDB 或 LLDB,大部分從零實現
- 適用於大型可執行檔案(已在 2.5 GB 的 ClickHouse 上測試)
- 帶進度條的非同步操作
- 以單個 6 MB 可執行檔案分發,無依賴項
當前侷限性
- 僅支援 Linux 系統
- 僅支援 x86-64 架構
- 僅支援原生程式碼(C++、Rust 等)
- 僅有 TUI(無 REPL 或 GUI)
- 不支援遠端除錯(可透過 SSH 工作)
- 單程序(不跟蹤 fork)
- 無記錄/重放功能
除錯工具的現狀
'nnd' 的出現突顯了關於各平臺除錯工具狀態的更廣泛討論。評論揭示了 macOS 使用者的特殊痛點,一位使用者感嘆macOS 在優質除錯工具方面的乾旱仍在繼續。其他人則提到期待 RAD Debugger 承諾的 Linux 版本,表明人們普遍渴望更好的除錯體驗。
對於對替代方案感興趣的開發者,社群討論指出了幾個選擇,如 pwndbg(為 GDB/LLDB 新增生活質量改進)和 cgdb(一個帶有 vim 繫結的基於 ncurses 的 GDB TUI)。
這個 6 MB 的獨立可執行檔案不需要依賴項,使 'nnd' 對那些希望快速嘗試新除錯方法而無需複雜設定的人特別有吸引力。雖然仍在積極開發中並已實現基本功能,建立者指出他們每天使用它並發現它非常有用,儘管它還沒有在不同環境中廣泛測試。
隨著開發工具的不斷發展,'nnd' 代表了一種專注的嘗試,旨在改程序序員工作流程中的關鍵部分,相比構建系統和編輯器等領域,這一部分的創新相對較少。
參考:al13n321/nnd