Pycallgraph не генерирует вывод графика в режиме отладки
Я использую Pycallgraph для генерации вывода, но я хочу сохранить промежуточный вывод графика (вместо генерации изображения), потому что я хочу сделать небольшие изменения в нем.
Я бегу как:
PYTHONPATH=. pycallgraph -d graphviz -- ./ab_ndh_graph.py > out.graphd
Который генерирует 2x вещи:
- pycallgraph.png - это весь граф вызовов (вывод графа в out.graphd)
- 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()
1 ответ
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()
тем не мение.