Debuging Django
起初 hackernews 看到一个文章 PySnooper: Never use print for debugging again,觉得挺有意思的,结果把 hackernews 的讨论看了一下发现有意思东西更多一点,总结一下。
- PySnooper: Never use print for debugging again,只需要给函数加一个装饰器,就可以把函数执行的每一步的结果都打印出来。
- django-extensions 的 runserver-plus 配合 Werkzeug 可以实现在遇到异常的时候,支持在 web 上面调试代码,打印异常的时候的上下文内容什么的。
- Python 自己的 breakpoint 函数,执行到的时候默认会进入 pdb.set_trace() 状态方便你进行上下文调试。
- icecream 提供了一个方便的 ic 函数,可以无感的加入到你的代码里面,不影响你的代码的执行结果,但是会打印传给它的参数和执行结果。
- Behold: A debugging tool for large Python projects,可以替代你写冗长的打印命令。不过感觉它自己的语法似乎也并不方便。。。
- VS Code 提供的 Logpoints 和 Visual Studio 提供的 Break When Value Changes。
- stackprinter 可以让你的堆栈打印更友好,打印堆栈的时候还可以输出上下文的取值。
- pdb, epdb,ipdb, 应该都是类似的东西,其中 pdb 是自带的。通过给代码增加 import ipdb ipdb.set_trace() 调试。
- pydbg 替代 print 的。
另外一篇文章
- 可以使用 f-string 调试
print(f"i={i}, processed_word={processed_word}") # python 3.6
print(f"{i=}, {processed_word=}") # python 3.8
- PySnooper: 感觉有点太重了,一般也不是总是需要打印这些。
- 使用 logging: 这个和 f-string 感觉没啥大差别。
- 使用 pdb 的 breakpoint() 进入 pdb 交互。
- 使用 vscode。
- 使用 stackprinter。