系统是部署在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 分支语句
- 一些关键变量值的改变