2014-07-09 74 views
2

我使用Pycallgraph生成輸出,但我想保存中間圖形輸出(而不是生成圖像),因爲我想對它進行一些小的修改。pycallgraph在調試模式下不生成圖形輸出

我正在爲:

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

這是產生2倍的東西:

  1. pycallgraph.png - 這是整個調用圖(在 out.graphd graphd輸出)
  2. filter_max_depth.png - 這是基於代碼的調用 圖(正確,但沒有圖形輸出)

如何才能獲得爲「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() 

回答

0

GraphvizOutput類使用臨時文件輸出dot源,並再次清除它之前運行在該文件中的dot命令行工具。

但是,您可以運行PyCallGraph後再生相同的文件內容,而很容易地通過調用generate()方法:

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

你也可以打開你的config對象的調試選項;在那種情況下,dot源被寫入日誌。在config對象上設置.debug標誌:

config.debug = True 

但隨後做在命令行上不使用-d

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

從本質上講,這是一樣的但是加入print graphviz.generate()

相關問題