|
|
1
24
我强烈建议不要滥用settrace。我假设你理解这些东西,但其他人稍后可能不会理解。有几个原因:
跟踪函数是很酷的黑客行为。能滥用它很有趣,但请不要把它用于真正的东西。如果我听起来有点威吓,我道歉,但这是用真正的代码做的,这是一种痛苦。例如, DecoratorTools 使用trace函数执行使此语法在python 2.3中正常工作的神奇功能:
一个很好的黑客,但不幸的是,它意味着任何使用decoratortool的代码都不能与coverage.py(或者debugger)一起工作。如果你问我,这不是一个好的折衷办法。我更改了coverage.py以提供一种模式,让它与decoratortools一起工作,但我希望我没有必要这样做。 即使标准库中的代码有时也会出错。pyexpat决定与其他扩展模块不同,并像调用Python代码一样调用跟踪函数。太糟糕了 did a bad job of it . </rand & gt; |
|
|
2
18
|
|
|
3
10
当然,代码覆盖是通过跟踪函数完成的。一件很酷的事情我们以前没有过,那就是分支覆盖率测量,它很好地发展起来,即将发布在alpha版本的 coverage.py . 例如,考虑这个函数:
如果使用此调用测试它:
然后语句覆盖率将告诉您函数的所有行都已执行。但是,当然,这个函数中有一个简单的问题:用0调用它会引发UnboundLocalError。 分支度量会告诉您代码中有一个分支没有被完全执行,因为分支中只有一条腿被执行过。 |
|
|
4
3
例如,逐行获取python代码的内存消耗: http://pypi.python.org/pypi/memory_profiler |
|
|
5
1
我没有一个全面的答案,但在另一个用户的帮助下,我用它做的一件事是 create a program that generates the trace tables of other Python programs . |
|
|
6
1
python调试器pdb使用sys.settrace分析要调试的行。 这里是PDB的C优化/扩展,它还使用sys.settrace |