假设我有一个令人讨厌的函数,里面有很多if-else,这个函数有一个随机发生的bug。
我无法重现或调试它,我想添加一些日志记录,以查看当错误再次发生时,函数的哪些部分已经执行。
现在可以在每一行之前添加一个日志,如下所示:
def my_annoying_function(self):
logger.info("self._call_other_function()")
self._call_other_function()
logger.info("self.myvar = 5")
self.myvar = 5
logger.info("i = 4")
i = 4
logger.info("i = i + 5")
i = i + 5
if self.myothervar is True:
logger.info("self.call_other_function2()")
self.call_other_function2()
...
有没有人知道一种方法来实现相同的日志记录行为,并在执行之前或之后记录每个语句,而不会使代码混乱?
2条答案
按热度按时间mnemlml81#
若要向另一个答案添加详细信息,可以通过编程方式打开跟踪,如下例所示:
运行时,将打印:
因此,它跟踪在
Trace.run
中指定的函数内部以及在该调用内部执行的所有语句。zbq4xfa02#
我认为
python -m trace --trace demo.py
值得一试。python -m trace --trace demo.py
输出为