Blog Cover Image

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

有的時候,你無意間遇到的一些故事,會激發你的靈感,改變你的想法,接下來你會用與之前全然不同的觀念去創造屬於你獨特的故事。

Sign @MinaYu.

[後端小菜鳥] Debug 流程

Posted on

原先是在後端小菜鳥學習記錄(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,並解決他們囉!