桀驁不馴的代碼又搞事情?我找來十個開源項目幫你馴服它們!
本文轉(zhuǎn)載自微信公眾號「HelloGitHub」,作者HelloGitHub。轉(zhuǎn)載本文請聯(lián)系HelloGitHub公眾號。
你的編程能力從什么時候開始突飛猛進?
看到這個問題,我陷入了沉思。我開始回憶過往的編程經(jīng)歷...貌似我的編程能力沒有突飛猛進過!但如果說被罵和嫌棄的次數(shù)變少就算是進步的話,那么我“突飛猛進”的轉(zhuǎn)折點就應該是:自從我看得懂代碼的報錯和異常,不拿白癡的問題找我?guī)煾岛缶秃苌侔ちR了。從那以后我就開始自己解決代碼的 BUG 和問題,然后被“委以重任”開始獨立開發(fā)模塊和負責項目了。自此我也算是吃上了程序員這口飯,感謝師傅沒有放棄我~
如果說代碼是一匹桀驁不馴的野馬,一開始要先認識它不能“指鹿為馬”,也就是搞懂語法能看懂代碼。然后多數(shù)情況下運行代碼就會出錯,所以需要先馴服它。剛開始可以先:
- 嘗試定位問題,把關(guān)鍵步驟的變量輸出出來
- 學會用 IDE 調(diào)試代碼,弄清楚每一步的值
- 拿著異常的關(guān)鍵字:錯誤代碼、異常類別,去問搜索引擎
但如果是線上運行著的代碼、需要在服務器上找問題、需要在真機上調(diào)試,那上面的方法就很難搞了。剛找到通往成功的鑰匙,就發(fā)現(xiàn)鎖換了。
不怕!今天 HelloGitHub 帶來的開源項目,助你全方位搞定桀驁不馴的代碼,讓 BUG 無處遁形。
更好用的調(diào)試工具
編程語言都自帶代碼調(diào)試工具(Debugger),比如:C/C++(GDB)、Python(pdb)、Java(JDB)、LLDB 等,這些工具常用于服務器端調(diào)試代碼。下面這些開源項目比自帶的調(diào)試工具:操作更加簡單、信息展示更豐富、更加人性化,好用的調(diào)試工具能夠更加方便地調(diào)試代碼,定位問題。
注意:不要在服務器上調(diào)試線上代碼,風險巨大!
1、dbg-macro(C++)
Star:1.7k|語言:C++
兼容 C++11 的 header-only 單個頭文件的打日志方式調(diào)試庫。它提供了比 printf 和 std::cout 更好的宏函數(shù)。特點:
- 美觀的彩色輸出
- 支持基礎類型和 STL 容器類型的輸出
- 除了基本信息外,還輸出變量名和類型
https://github.com/sharkdp/dbg-macro
另外 Python 也有類似功能的庫:PySnooper
https://github.com/cool-RR/PySnooper
2、pudb(Python)
Star:2.2k|語言:Python
支持代碼高亮的 Python 命令行可視化調(diào)試器。棧、斷點、變量動態(tài)實時更新,支持 VIM 的操作方式,還兼容 pdb 的某些命令,更容易上手。
https://github.com/inducer/pudb
3、pylane(Python)
Star:292|語言:Python
Python 進程注入和調(diào)試工具??梢灾苯舆M入正在運行的 Python 進程,動態(tài)注入或執(zhí)行代碼片段。
https://github.com/NtesEyes/pylane
4、arthas(Java)
Star:27.3k|語言:Java
簡單易用的命令行 Java 診斷工具。支持 JVM 進程和資源監(jiān)控,還能展示 GC、JDK 版本等信息,無需增加代碼就可以加入日志,幫助快速定位問題。當線上出現(xiàn)了奇怪的異常時,無需發(fā)版就能截獲運行時的數(shù)據(jù),包括參數(shù)、返回值、異常、耗時等信息。
https://github.com/alibaba/arthas
5、delve(Go)
Star:17.1k|語言:Go
簡單且強大的 Go 源碼調(diào)試器。支持線程和 goroutine,功能齊全。
https://github.com/go-delve/delve
目前很多 IDE 都支持遠程調(diào)試啦(基于上述項目實現(xiàn)),這里就不再贅述了,主要是我沒用過 IDE 遠程調(diào)試?
移動端的調(diào)試工具
PC 端最常用的 Web 調(diào)試工具應該是 Chrome 瀏覽器的開發(fā)工具啦。
下面介紹的開源項目幫你開啟移動端的“開發(fā)者工具”,全圖掛那種!
不用盲猜啦,全圖的感覺真爽。
6、eruda(手機網(wǎng)頁)
Star:11.2k|語言:JavaScript
專為手機網(wǎng)頁設計的前端調(diào)試工具。類似手機端迷你版開發(fā)者模式,可用于在手機端調(diào)試頁面。主要功能包括:顯示 console 日志、檢查元素狀態(tài)、捕獲 XHR 請求、顯示本地存儲和 Cookie 等信息。
https://github.com/liriliri/eruda
7、FLEX(iOS)
Star:12.6k|語言:Objective-C
iOS 應用上的調(diào)試工具。通過它你幾乎可以查看應用的所有狀態(tài)并修改任意組件的數(shù)值。比如:調(diào)整布局、瀏覽文件、查看網(wǎng)絡請求歷史、本地數(shù)據(jù)庫等。
https://github.com/FLEXTool/FLEX
8、DoraemonKit
Star:18k|語言:Java
支持多種客戶端的調(diào)試工具。它功能強大、接入方便、便于擴展,能夠讓你在 Android、iOS、小程序等移動端應用,快速接入常用的調(diào)試、輔助開發(fā)、性能檢測、視覺輔助等工具。
https://github.com/didi/DoraemonKit
9、insomnia
Star:18.1k|語言:JavaScript
支持 API、GraphQL、REST、gRPC 的調(diào)試工具,請求接口的桌面應用。不僅有簡約漂亮的界面,還支持 Windows、Linux、macOS 主流操作系統(tǒng)。
https://github.com/Kong/insomnia
又多了一個奇怪的工具
調(diào)試代碼也好,應用開掛也罷。都是為了找到問題原因,然后解決問題。
那么能遠程協(xié)助下嗎?
10、termpair
Star:1.2k|語言:Python
能夠在命令行開啟遠程協(xié)助的工具。原理是命令行啟動了一個 Web 服務,然后生成分享用的鏈接。最后只要拿到鏈接就能通過瀏覽器,遠程操作服務器了。有了它再遇到問題,求助大佬就方便多了。
https://github.com/cs01/termpair
最后
想要馴服桀驁不馴的代碼,不是一件容易的事情。我的經(jīng)驗:
先定位問題,然后驗證想法復現(xiàn)問題,最后在考慮解決方案。
弄懂每一行代碼,知曉復雜系統(tǒng)下的數(shù)據(jù)流向和狀態(tài)。
這期介紹的開源項目都是用來輔助你找到 Bug、定位問題的工具,有了它們相信你假以時日,馴服代碼的能力定會突飛猛進。編程能力起飛!