C 코드에 대한 호출 그래프 생성
이 문서에서는 특히 모든 코드를 식별하려고 할 때 C 코드에 대한 호출 그래프를 생성하는 기술을 살펴봅니다. 특정 기능으로 이어지는 가능한 실행 경로.
호출 생성 그래프
이러한 요구를 해결하기 위한 한 가지 접근 방식은 LLVM 최적화 파이프라인을 활용하는 것입니다. 이는 -S 및 -emit-llvm 플래그를 사용하여 코드를 컴파일한 다음 opt 도구를 통해 -analyze 및 -dot-callgraph 옵션을 사용하여 수행할 수 있습니다. 예:
$ clang++ -S -emit-llvm main1.cpp -o - | opt -analyze -dot-callgraph $ dot -Tpng -ocallgraph.png callgraph.dot
이 명령은 시각적 다이어그램으로 표시되는 잠재적 실행 경로를 나타내는 호출 그래프를 생성합니다.
호출 그래프 표현 사용자 정의
어떤 경우에는 가독성을 높이기 위해 호출 그래프를 후처리하는 것이 도움이 될 수 있습니다. 한 가지 방법은 c filt를 사용하여 손상되지 않은 함수 및 클래스 이름을 얻는 것입니다. 다음 예는 이 프로세스를 보여줍니다.
$ clang++ -S -emit-llvm main1.cpp -o - | opt -analyze -std-link-opts -dot-callgraph $ cat callgraph.dot | c++filt | sed 's,>,\>,g; s,-\>,->,g; s,<,\<,g' | gawk '/external node/{id=} != id' | dot -Tpng -ocallgraph.png
이 수정된 그래프를 적용하면 각 경로에 관련된 특정 함수와 클래스를 더 쉽게 식별할 수 있습니다.
위 내용은 실행 경로를 분석하기 위해 C 코드에 대한 호출 그래프를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!