Debug點滴

對於大多數團隊來說,第一需要的不是架構師,而是一個debug大師。

一個產品的高性能,高擴展性,確實是產品結構(不是代碼結構)決定的,但架構這種東西不是設計出來的,是維護和優化出來的。所有架構先行框架先行的研發團隊最後都要和業務需求打架。如果此次項目和上一個項目相同,先行的不是架構和框架而是重構。第一需要不是架構師還有一個拿不上臺面的原因是,90%的團隊聘不起架構師。

大多數研發團隊面臨的問題是反覆修改的功能點,低水平程序員留下的無文檔代碼,僅僅出現在生產環境中的bug和無從下手的性能問題。面對這些問題,聘一個架構師是不靈的。


debug第一前提是熟悉產品。客戶端和服務器是CS/BS,通信協議是阻塞的還是非阻塞的,計算數據是來自客戶端的輸入,還是來自其他入口,計算是被用戶驅動的還是有其他驅動方式,有沒有數據共享等等。

bug產生:0數據不對,導致計算結果錯誤;1路徑分支覆蓋不全,導致邏輯丟失或錯誤;2競爭條件下的數據被多次寫,導致計算錯誤;3基於狀態的邏輯,常常發生狀態跳轉錯誤。

一個常用的技巧是輸出stackdump能夠很明確的展示程序路徑,選擇當前程序路徑的原因一般就這個bug的原因。

對於僅僅出現的生產環境中的bug,首先查看error日誌的stackdump,找到bug的起點。這要求研發團隊要有生產環境的代碼副本,否則statckdump沒有意義。有時候stackdump也無法提供有效信息,要依靠經驗和回頭再讀代碼了。

對於性能的優化不是猜的,是牢牢建立的測試基礎上的。但性能測試測什麼,怎麼測才能準確反映程序的負載,這就要看計數老大的功力了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章