調試是工程師核心基本功。本文建立系統性調試方法論:三大原則 → 四類工具 → 五大技巧 → 三個實戰案例,幫你從「盲目試錯」進化為「精準定位、高效修復」。
| 類別 | 工具 | 核心用途 | 安裝/使用 |
|---|---|---|---|
| PHP 性能分析 | Xdebug | 斷點調試、調用鏈可視化、覆蓋率分析 | pecl install xdebug + IDE 配置 |
| XHProf / tideways | 生產級性能採樣、火焰圖生成 | Composer require tideways/xhprof | |
| 前端/網絡 | Firebug / Chrome DevTools | 請求頭/響應、JS/CSS 調試、網絡瀑布圖 | 瀏覽器內置 F12 |
| FirePHP | PHP 服務端日志直接輸出到瀏覽器控制台 | Composer require firephp/firephp | |
| HTTP 抓包 | HttpWatch (IE) / Wireshark / tcpdump | 深層協議分析、加密流量解密 | 系統級安裝 |
| 日志分析 | Linux 命令 | tail -f、grep、awk、sed 處理 Nginx/Apache/MySQL 日志 | 原生支持 |
| PHP 內置函數 | var_dump/print_r/var_export/debug_backtrace | 快速變量檢查、調用棧追蹤 | 零依賴 |
git bisect 定位引入 Bug 的提交,diff 對比正常/異常版本配置player_id 改為 team_id_player_id 復合鍵tail -f access.log | grep 大文件 → 發現單文件被瘋狂請求limit_req_zone 限流、靜態資源上傳 OSSconnect() failed (111: Connection refused) while connecting to upstream,上游是 PHP-FPMretry_timeout、健康檢查自動剔除節點[ ] 問題能否穩定復現?最小復現步驟? [ ] 是否已查看所有相關日志(應用/中間件/系統)? [ ] 是否用 Xdebug/埋點定位到具體函數/行? [ ] 修復是否解決根因?是否有副作用/回歸風險? [ ] 是否添加了回歸測試/監控告警防止復發? [ ] 是否記錄到團隊知識庫(Postmortem)?