Blog Cover Image

Inspire you to have New thinking, Walk out your unique Road.

[後端小菜鳥] Debug 流程

Posted on Nov 14, 2018

原先是在後端小菜鳥學習記錄(4)  的 Debug 流程,但由於我覺得早期寫的後端學習筆記比較亂,畢竟當初剛進公司,也很霧煞煞亂糟糟,也為了針對工作的時數做統計,還有針對每天的學習做紀錄

所以無論是來自前輩的教導,還是自己領悟跟找尋到的知識/資料,都全部混在一起

起初是因為我寫了上傳資料於資料庫的 py 檔,在使用 jmeter 打入大量資料時會掉資料而不知所措,在對於還是菜鳥(雖然現在也差不多 XD)的時期,出了錯誤,也不知道到底發生什麼

使用的環境是 Docker , Nginx, ... Flask

然後在使用 docker 建立整體連線後,打入大量資料產生掉資料的問題

前輩們用了很有條例的方式來引導我學習 Debug 的流程

帶著我一層一層去剖析在哪一層時會造成掉資料

# Debug 的流程

1. 重現問題的步驟 (reproducible)
2. 建立單純的測試環境 (例如:使用 docker-compose 來建立環境在本機上)
    * mysql
    * api

# 拆解問題

* 使用資料流拆解問題
  * nginx (project.conf)
  * uwsgi (app.ini)
  * flask-app (app.py)
  * /app (`@app.route('/app')`) 這個是路徑
  * db operation (`insert_data()`) # 這個是Insert資料的函式

# 識別問題

> 出事就看 log,不懂就看文件

* 整合測試
* 單元測試
* 由 log 檢查問題 # 優先懷疑是自己程式寫錯 < 大神標記XD
    * 文件的範圍
    * 官方手冊
    * Google 跟 Stackoverflow 的關鍵字查詢 # 估狗是第三步驟,在這之前若出錯應該是先找官方手冊
    * source code (發生問題 log 的相對應的原始碼) # Github上或網路上有人分享的相關程式碼
* 供應商測試 (vendor test) # 就是python的package, 通常不太會是出錯主因

以上大概就是出 Bug 的處理流程

以往只要出事,我就估狗,然後把所有估狗到的作法全試一遍

這種方法是錯的,因為大部分我比較無意識的去抄 Code

而沒有像去看官方文件,去真正查詢如何使用

這個部分是全部程式碼+環境都包好送 QA 測試時發生錯誤

所以,我自己要重新建立環境

然後試著讓問題再發生一次

接著再分解步驟去找出問題

除此之外,我認為學習 Debug 工具也很重要,我最近學會了使用 Pycharm 的 Debug Tool 來做 Debug 還有追蹤 Code,我覺得很好用,也大大縮短自己 Debug 的時間

其實也不是推廣,但發生問題時,的卻令人煩惱

不過只要做好搭配流程+ Debug 工具的輔助,相信大家很快就能找出 Bug,並解決他們囉!