Инструмент для визуализации потока кода (C / C ++) [закрыт]

StackOverflow https://stackoverflow.com/questions/153074

  •  03-07-2019
  •  | 
  •  

Вопрос

Есть ли у вас какие-либо предложения инструментов, облегчающих задачу понимания кода на C / C ++?Мы только что унаследовали большую часть программного обеспечения, написанного другими, и нам нужно быстро освоиться с ним.Есть какие-нибудь советы по инструментам, которые могли бы упростить эту задачу?

Это было полезно?

Решение

Источник информации и Понимать для C ++ это лучшие инструменты, которые вы можете получить для анализа кода на c / c ++, включая блок-схемы.

Другие советы

Программное обеспечение для профилирования дает вам представление о том, какие функции были вызваны.

Если вы можете использовать Linux, попробуйте KCachegrind

Лично я использую отладчик.Пробежитесь по коду и посмотрите, что он делает, и куда он движется - это единственный путь.

Однако вы можете запустить его с помощью некоторых генераторов документации, которые (иногда) помогают.Хорошим примером является доксиген.

Доксиген очень хорош в генерации диаграмм из кода без применения разметки, если вы включите опцию EXTRACT_ALL.Вам нужно Графиквиз установлен для получения диаграмм, сгенерированных с помощью параметра HAVE_DOT.Я обнаружил, что установка его и оставление DOT_PATH пустым отлично работает в Windows, но в OS / X по-прежнему приходится указывать непосредственно на местоположение инструмента dot.

Там есть отличный Расшифровка кода статья в ACM Queue, в которой больше рассказывается об использовании doxygen и DTrace.

KScope, построенный на утилите cscope, если вы используете Linux (KDE).Лучшее, что я когда-либо использовал (и использую постоянно), чтобы разобраться в каком-то огромном фрагменте незнакомого кода, который я должен как-то изменить или какой API я должен использовать для своих нужд.Среди его особенностей - база данных перекрестных ссылок, поиск по которой можно осуществлять множеством способов:вы можете найти все ссылки на символ, его глобальное определение, найти вызывающих функцию и многое другое.У него даже есть встроенная IDE и возможность отображать график вызовов.

Доксиген даст вам диаграммы отношений классов, если вы используете graphviz, даже если вы специально не готовились к этому.

Есть некоторые инструменты, подобные Egypt http://www.gson.org/egypt/egypt.html это сработает, но только если вы соответствуете ожидаемой версии GCC, используемой для компиляции кода, и точной версии генератора callgraph.То же самое можно сказать и о codeviz http://www.csn.ul.ie /~mel/проекты/codeviz/

Другой вариант - valgrind, используемый в режиме cachegrind (он генерирует тип callgraph, который вы можете использовать в программе kcachegrind.

Я лично использую инструменты отладчика Visual Studio.

Он поставляется с функцией "График вызывающих абонентов", которая позволит вам визуализировать содержимое в маленьких коробочках.Кроме того, стек вызовов и обычные функции просмотра - это обычно все, что мне нужно

Есть также Браузер аспектов что не очень хорошо работает с Eclipse 3.4.0

попробуй Время действия, Это инструмент профилирования, который отображает все функции, которые были вызваны (и время, которое это заняло), вы можете установить начальную и конечную точки для анализа.У них есть 30-дневная пробная версия.

Я использовал Борланд Вместе некоторое время назад и он проделал приличную работу по генерации моделей из кода.Я полагаю, что он даже будет генерировать диаграммы последовательностей из кода.Имейте в виду, что если ваш код в беспорядке, то и ваша модель будет такой же.И, насколько я помню, это недешево, но иногда можно поймать что-нибудь особенное.

Rational Quantify также представляет собой хороший график вызовов.

я попробовал инструмент под названием Visustin, который не очень хорош графически, но делает то, что говорит:Блок-схема из кода.http://www.aivosto.com/visustin.html

Doxygen, хорошая вещь в этом заключается в том, что он даст вам знать, насколько уродливым / хорошим является ваш код с точки зрения циклической зависимости классов.Таким образом, вы будете вынуждены переработать свой код, хотя вам это может и не понравиться :-)

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

Когда вы переходите к методу, классу или переменной, которые вы не понимаете, вы просто нажимаете тег, чтобы перейти к этому коду, просматриваете его, а затем возвращаете тег обратно.(они привязаны к нажатиям клавиш, так что это происходит очень быстро)

Вы также можете использовать find-references, чтобы увидеть, где используется эта функция / переменная.

Экономит массу времени по сравнению с необходимостью идти и выяснять, в каком файле что-то находится.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top