Pycallgraph在调试模式下不生成图形输出

时间:2014-07-09 14:04:33

标签: python graphviz call-graph pycallgraph

我正在使用Pycallgraph来生成输出,但我想保存中间图形输出(而不是生成图像),因为我想对它进行一些小的修改。

我正在运行:

PYTHONPATH=. pycallgraph -d graphviz -- ./ab_ndh_graph.py > out.graphd

这产生了2件事:

  1. pycallgraph.png - 这是整个调用图(图形输出) out.graphd)
  2. filter_max_depth.png - 这是基于代码的调用 图表(正确但没有图形输出)
  3. 如何才能为“filter_max_depth”生成图形输出?

    文件内容:

    config = Config(max_depth=2)
    config.trace_filter = GlobbingFilter(exclude=[
        'pycallgraph.*',
    ])
    graphviz = GraphvizOutput(output_file='filter_max_depth.png')
    
    with PyCallGraph(output=graphviz, config=config):
        o = AB_NDH()
        o.run()
    

1 个答案:

答案 0 :(得分:0)

GraphvizOutput类使用临时文件输出dot源,并在该文件上运行dot命令行工具,然后再次清理它。

但是,您可以在运行generate()后调用PyCallGraph方法轻松重新生成相同的文件内容:

with open('filter_max_depth.graphd', 'w') as dotfile:
    dotfile.write(graphviz.generate())

您还可以打开config对象的调试选项;在这种情况下,dot源被写入日志。在.debug对象上设置config标志:

config.debug = True

在命令行上使用-d

PYTHONPATH=. pycallgraph graphviz -- ./ab_ndh_graph.py > out.graphd

基本上,这与添加print graphviz.generate()相同。