Отображение CFG от llvm в xvcg
Есть -view-cfg
опция ( док) в llvm's opt
программа, которая позволяет мне просматривать график потока управления через dot
программа. Но CFG слишком велик, чтобы его можно было представить как постскриптум из точки. Я знаю, что есть xvcg
Утилита способна отображать сложные графики, в том числе CFG (и его человек говорит: "Инструмент VCG - визуализация графиков компилятора").
Итак, как я могу вывести CFG llvm в формате xvcg?
1 ответ
Непосредственное создание файлов.vcg из LLVM потребует серьезных изменений в GraphWriter, который очень специфичен для GraphViz. Вместо этого мне кажется, что наиболее простым решением будет сохранение файла точек (через -dot-cfg
вместо -view-cfg
), а затем преобразовать его, используя что-то вроде Graph-Easy. Из его документации (выделено мое):
В качестве входных данных он понимает следующие форматы:
- Graph:: Easy http://bloodgate.com/perl/graph/manual/
- DOT http://www.graphviz.org/
- VCG http://rw4.cs.uni-sb.de/~sander/html/gsvcg1.html
- GDL http://www.aisee.com/
Выходными данными может быть дамп графика в одном из следующих форматов:
Кстати, если вы хотите получить много графиков и предпочитаете их просматривать перед созданием большого количества точечных файлов, рассмотрите возможность использования средства просмотра точек, которое также позволяет вам сохранить файл, например мой форк xdot.py, или еще лучше, изменить xdot.py
так что он умеет сохранять в формате.vcg сам, используя Graph-Easy.
Другая альтернатива Graph-Easy - это dot2gdl.