IT이야기

코드 흐름을 시각화하는 도구(C/C++)

cyworld 2022. 6. 1. 17:39
반응형

코드 흐름을 시각화하는 도구(C/C++)

C/C++ 코드를 이해하기 쉬운 툴이 있습니까?우리는 다른 사람들이 작성한 큰 소프트웨어를 물려받았을 뿐인데, 우리는 그것을 빨리 알아내야 합니다.이 작업을 단순화할 수 있는 도구에 대한 조언이 있습니까?

프로파일링 소프트웨어를 사용하면 호출된 함수를 파악할 수 있습니다.

Linux 를 사용할 수 있는 경우는, KCachegrind 를 사용해 주세요.

SourceInsight 및 Understand for C++는 흐름도를 포함한 c/c++ 코드 분석에 가장 적합한 도구입니다.

Doxygen은 EXPLT_ALL 옵션을 켜면 마크업을 적용하지 않고 코드에서 다이어그램을 생성하는 데 매우 능숙합니다.HAVE_DOT 설정으로 생성된 다이어그램을 가져오려면 GraphViz가 설치되어 있어야 합니다.Windows 에서는 DOT_PATH 를 인스톨 해 두면 정상적으로 동작합니다만, OS/X 에서는, 도트 툴의 위치를 직접 참조할 필요가 있습니다.

ACM 큐에는 Doxygen과 DTrace의 사용에 대해 자세히 설명하는 훌륭한 코드 스펠링 기사가 있습니다.

개인적으로 디버거를 사용합니다.코드를 조사해서 그것이 무엇을 하는지, 그리고 어디로 가는지 보는 것만이 유일한 방법입니다.

그러나 일부 Documentation-Generator를 통해 실행할 수도 있습니다.이것에 의해, (경우에 따라서는) 도움이 됩니다.좋은 예로는 doxygen이 있습니다.

KScope, cscope 유틸리티를 기반으로 구축됩니다(Linux(KDE)에 있는 경우).내가 지금까지 사용한 것 중 가장 좋은 것(그리고 항상 사용하는 것)은 내가 어떻게든 수정해야 하는 거대한 낯선 코드 조각이나 내 요구에 맞게 사용해야 하는 API에 대한 것이다.그 기능 중에는 다양한 방법으로 검색할 수 있는 상호 참조 데이터베이스가 있습니다.기호의 모든 참조, 글로벌 정의, 함수의 발신자/발신자 검색 등이 있습니다.IDE가 내장되어 있어 콜그래프를 표시할 수도 있습니다.

Doxygen은 graphviz를 사용하는 경우 특별히 준비하지 않았더라도 클래스 관계도를 제공합니다.

이집트 http://www.gson.org/egypt/egypt.html 등의 툴이 동작하지만 코드 컴파일에 사용되는 GCC 버전과 콜그래프 제너레이터의 정확한 버전이 일치하는 경우에만 동작합니다.codeviz http://www.csn.ul.ie/ ~mel/mel/codeviz/에 대해서도 마찬가지입니다.

다른 옵션은 캐시그라인드모드에서 사용되는 밸그라인드입니다(kcachegrind 프로그램에서 팔로우할 수 있는 콜그래프 타입이 생성됩니다).

저는 개인적으로 Visual Studio 디버거 도구를 사용합니다.

작은 상자 안에 있는 것들을 시각화할 수 있는 "발신자 그래프" 기능이 포함되어 있습니다.또한 콜 스택과 통상적인 워치 기능만 있으면 됩니다.

또한 Eclipse 3.4.0에서 잘 작동하지 않는 Aspect Browser도 있습니다.

AQtime을 사용해 보세요.호출된 모든 함수(및 소요된 시간)를 표시하는 프로파일링 도구입니다.분석의 시작점과 종료점을 설정할 수 있습니다.그들은 30일간의 재판이 있다.

얼마 전에 Borland Together를 사용했는데, 코드에서 모델을 생성하는 작업이 꽤 잘 되었습니다.코드로부터 시퀀스 도표까지 생성할 수 있다고 생각합니다.코드가 엉망일 경우 모델도 엉망일 수 있습니다.그리고 내 기억으로는 싸지는 않지만 가끔 특선 요리를 잡을 수 있다.

Rational Quantify(합리적인 정량화)는

Visustin이라는 툴을 사용해 보았습니다.그래픽상으로는 그다지 훌륭하지 않지만 다음과 같이 되어 있습니다.코드의 흐름도.http://www.aivosto.com/visustin.html

Doxygen, 그것의 좋은 점은 호가 못생겼다는 것을 알려줄 것이다/좋은 것은 클래스의 주기적 의존성의 관점에서 당신의 코드이다.따라서 코드가 마음에 들지 않을 수도 있지만 코드를 다시 팩터링해야 합니다:-)

Slikedit은 사용자가 모르는 큰 코드 블록을 탐색하는 데 매우 적합합니다.태그 기능을 사용하면, 어느 파일에 들어가 있는 코드에 대처할 필요 없이, 기능 베이스로 코드를 처리할 수 있습니다(EMACS에는 태그가 붙어 있어 Slikedit와 같은 기능을 갖추고 있습니다만, 학습 곡선이 약간 더 가팔라집니다).

모르는 메서드나 클래스, 변수에 도달하면 해당 코드로 이동하여 살펴본 후 다시 팝업태그를 붙입니다.(키 입력에 의존하기 때문에 매우 빠릅니다)

또한 Find-Reference를 사용하여 해당 함수/변수가 사용되는 위치를 확인할 수도 있습니다.

어떤 파일에 어떤 파일이 있는지 확인하는 것보다 훨씬 많은 시간을 절약할 수 있습니다.

doxygen은 관계 그래프도 생성하는 무료 문서 생성 도구입니다(Javadoc과 유사).

언급URL : https://stackoverflow.com/questions/153074/tool-to-visualise-code-flow-c-c

반응형