执行代码跟踪 - 如何知道项目中执行了哪些代码?

时间:2015-04-25 23:20:37

标签: python tracking execution flow

假设我有一个开源项目,我想从中借用一些功能。我可以获得在此项目的执行和/或交互过程中生成的某种报告吗?

报告应包含例如:

  • 已调用哪些函数,
  • 按顺序,
  • 已经实例化了哪些类等?

很高兴有一些图形输出...你知道,如果是其他树并突出显示已执行的分支等。

我最感兴趣的是python和C(perl也会很好)但是如果有任何通用工具可以覆盖多种语言(或者每种语言一种工具),那就非常好了。

PS:我熟悉调试器,但我不想逐步编写代码并检查这是否是正确的指令。我假设如果函数/方法/类等被正确命名,那么可以得到一些关于在哪里找到所需代码的提示。但只有命名是不够的,因为你不知道(从简短的代码概述)如果希望看起来函数foo()不需要一些由晦涩的函数bar()等生成的数据。为此我正在寻找一些东西可以看到运行代码之间的关系。

PS:不知道这是SO还是programmers.stackexchange的问题。如果您愿意,请随意移动。 PS:我注意到我不推荐使用的标签,但执行流程跟踪是描述此过程的最佳短语

1 个答案:

答案 0 :(得分:1)

查看Ned Batchelder的coverage以及名为pycallgraph的graphviz / dot库。可能不是你需要的,也是(仅限python)但是在球场。

Pycallgraph实际上更有意义,因为它显示了执行路径,而不仅仅是执行了哪些代码行。它只能正常渲染到PDF,但它不太难以让它做SVG(dot / graphviz支持svg和其他格式,pycallgraph是硬编码pdf渲染)。

两者都不会完全符合您的要求,但它们只是一个开始。