系統是部署在AWS上的大型分佈式系統。有的時候出問題找不到原因, 運維的兄弟特地部署了debug role.
這個debug role會把debug log 全部打開,這樣可以方便復現和查找問題。
但往往有些時候,即使開了debug role, 也沒有debug log。 還得現場改代碼,重新部署,及其浪費時間。
原因是什麼, 懶。
看下面的代碼。(爲了方便示例,隱去了所以複製邏輯)
import time
import logging
def dotask1():
return
def dotask2():
return
def dotask3():
return
def dosomething():
return
if __name__ == '__main__':
logging.debug("Main begin..")
flag = 1
'''suppose lots of operations on variable flag, and now we want to check flag'''
if (flag==1):
dotask1()
elif (flag==2):
dotask2()
else :
dotask3()
if, elif, else語句中完全沒有debug log,這就導致了開發者自己也要搞好半天才能知道到底走到了那個分支。其實只要在每個分支後面加入debug語句,找問題會變得非常簡單。
debug 語句再多都不爲過。
不能忘的debug 語句:
- 函數入口,出口
- if else 分支語句
- 一些關鍵變量值的改變