Pycallgraph не генерирует вывод графика в режиме отладки

Я использую Pycallgraph для генерации вывода, но я хочу сохранить промежуточный вывод графика (вместо генерации изображения), потому что я хочу сделать небольшие изменения в нем.

Я бегу как:

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

Который генерирует 2x вещи:

  1. pycallgraph.png - это весь граф вызовов (вывод графа в out.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()

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() тем не мение.

Другие вопросы по тегам