воскресенье, 7 октября 2012 г.

Получаем граф потока управления в gcc.

Для чего вообще нужны дампы компилятора? Обычно для отладки самого компилятора, в некоторых случаях для анализа программы сторонними инструментами.
В gcc есть возможность получить дампы с любого прохода компилятора. В данном случае меня интересует граф потока управления (control flow graph). Получить его довольно просто:

gcc *.c -da -dv

Файлы с графом имеют расширение .vcg, и при рендеринге должны выглядеть так:
 Но к сожалению, единственная программа, которая должна уметь отображать эти графы выдаёт следующее:
Wait.aLine 5: attribute T_Co_hidden currently not implemented !
.......aLine 523: attribute T_Co_hidden currently not implemented !
.....aLine 679: attribute T_Co_hidden currently not implemented !
..............................aLine 2859: attribute T_Co_hidden currently not implemented !
..aLine 2965: attribute T_Co_hidden currently not implemented !
..aLine 3104: attribute T_Co_hidden currently not implemented !
..aLine 3243: attribute T_Co_hidden currently not implemented !
..aLine 3369: attribute T_Co_hidden currently not implemented !
........aLine 3647: attribute T_Co_hidden currently not implemented !
........aLine 3925: attribute T_Co_hidden currently not implemented !
........aLine 4203: attribute T_Co_hidden currently not implemented !
......................................................................................................................eXIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0"
      after 5513 requests (5513 known processed) with 0 events remaining.
Касательно самой программы - это xvcg. На сайте была битая ссылка на исходники, поэтому я нашёл её где-то в твиттере(!) и на всякий случай сделал копию.

UPD: зедсь можно почитать про другую программу для просомтра vcg.

Комментариев нет:

Отправить комментарий