我想在scrapy框架中跟踪功能/类执行顺序。默认项目中有多个* .py文件,我想知道哪个py文件和类已按顺序执行。在每个类和每个函数中都放置记录器行听起来很愚蠢。如何可视化此顺序?
cprofile主要用于测量总时间。我还可以可视化一个模块内的执行顺序,这是常见的问题,但是很难可视化多个模块。
在跟踪包方面,我没有找到合适的示例来处理诸如scrapy或django之类的大型项目。跟踪用法教程仅涉及一个python文件。
我想在一个大型项目(例如scrapy)中的多个模块中跟踪多个* .py文件,而不是一个模块。
我知道像pdb这样的调试工具,但是我发现在整个项目中放置断点很麻烦。更重要的是,总结执行顺序并不容易。
最后,我通过使用Hunter进行了解决,它比内置的跟踪模块要好。跟踪模块不提供include_dir属性。
对于那些对如何跟踪所有刮擦线充满好奇的人。
$PYTHONHUNTER='Q(module_startswith=["scrapy", "your_project"])' scrapy list
对于django,跟踪rest_framework的执行代码并将其保存到test.log,例如:
$PYTHONHUNTER='Q(module_startswith=["rest_framework", "your_project"]), action=CallPrinter(stream=open("test.log", "w"))' python manage.py runserver --noreload --nothreading
该跟踪模块允许你跟踪一个程序运行时执行的程序执行,产生注释语句覆盖列表,打印主叫/被叫关系和列表功能。可以在其他程序中或从命令行中使用它。
python -m trace --count -C . somefile.py ...
上面的代码将执行somefile.py
并生成在执行过程中导入到当前目录中的所有Python模块的带注释的清单。
pdb模块为Python程序定义了一个交互式源代码调试器。它支持在源代码行级别设置(条件)断点和单步执行,检查堆栈框架,源代码列表以及在任何堆栈框架的上下文中评估任意Python代码。它还支持事后调试,可以在程序控制下调用。
最常用的命令:
在哪里)
下)
向上)
你还可以检查此问题Python调试技巧
Coverage.py通常在测试执行期间测量代码覆盖率。它使用Python标准库中提供的代码分析工具和跟踪钩子来确定哪些行是可执行的,哪些行已执行。
Hunter是一种灵活的代码跟踪工具包,不是用于衡量覆盖范围,而是用于调试,记录,检查和其他有害目的。
默认操作是仅打印正在执行的代码。例子:
import hunter
hunter.trace(module='posixpath')
import os
os.path.join('a', 'b')
我想在一个大型项目(例如scrapy框架)的多个模块中而不是一个模块中跟踪多个* .py文件。
您想从您的项目代码中找出什么?
猎人很棒。经过几天的尝试不同的工具,我发现猎人已经足够了。谢谢你。