2014-07-09 2 views
2

J'utilise Pycallgraph pour générer une sortie, mais je veux enregistrer la sortie graphd intermédiaire (au lieu de générer une image) parce que je veux y apporter quelques petites modifications.Pycallgraph ne générant pas de sortie graphique en mode débogage

Je suis en cours d'exécution comme:

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

Ce qui génère des choses 2x:

  1. pycallgraph.png - c'est le graphique complet d'appel (sortie graphd dans out.graphd)
  2. filter_max_depth.png - c'est l'appel basé sur le code graphique (correct, mais aucune sortie graphd)

Comment puis-je obtenir la sortie graphd pour "filter_max_depth" à la place?

Contenu du fichier:

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() 

Répondre

0

La classe GraphvizOutput utilise un fichier temporaire à la sortie de la source dot, et exécute l'outil de ligne de commande dot sur ce fichier avant de le nettoyer à nouveau.

Cependant, vous pouvez régénérer le même contenu de fichiers assez facilement en appelant la méthode generate() après l'exécution PyCallGraph:

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

Vous pouvez également activer l'option de débogage de votre objet config; dans ce cas, la source dot est écrite dans le journal. Réglage .debug drapeau sur l'objet config:

config.debug = True 

mais ne le font pas usage-d sur la ligne de commande:

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

Essentiellement, c'est la même que l'ajout print graphviz.generate() cependant.

Questions connexes