1. 日志
通过日志或者print来打印变量。必要时可以打印locals()和globals()
建议使用logging.debug()来代替print,这样到了正式环境,就可以统一删除这些日志。
2.trace
Python有个trace模式,可以打印整个程序的执行流
# encoding=utf8
def f():
print "aa"
if __name__ == "__main__":
f()
例如这段简单的程序,执行python -mtrace --trace test.py就会输出下面的日志:
--- modulename: test, funcname: # test模块,module级函数
test.py(2): def f(): #test.py的第2行,执行def f命令定义函数
test.py(6): if __name__ == "__main__":
test.py(7): f()
--- modulename: test, funcname: f
test.py(3): print "aa"
aa
--- modulename: trace, funcname: _unsettrace
trace.py(80): sys.settrace(None)
可以详细得看到这代代码在Python中的执行流程。
当代码比较复杂,例如调用了一些第三方库,这个trace日志就会非常多,所以最好重定向到一个文件里面,慢慢分析。
3.PDB
# encoding=utf8
import pdb
d