C++ 구조체 메모리 레이아웃 시각화를 위한 Visual Studio 확장
Visual Studio Marketplace 2022에서 최신 버전을 다운로드하세요.
Visual Studio Marketplace 2019에서 최신 버전을 다운로드하세요.
C++에서 구조 레이아웃은 다양한 요인의 영향을 받을 수 있습니다. 고성능 데이터 캐시 지향 코드를 생성하거나 구조 메모리 공간을 줄이려면 코드가 생성, 업데이트, 제거 또는 디버깅되는 동일한 지점에서 클래스 레이아웃을 인식하는 것이 중요합니다. 이 확장을 사용하면 프로그래머는 단 한 번의 클릭으로 Visual Studio 내에서 구조를 시각화할 수 있습니다.
메모리 레이아웃을 시각화하려면 C++ 구조체 정의 상단을 마우스 오른쪽 버튼으로 클릭하고 구조체 레이아웃 표시 (또는 Alt+L 누르기)를 선택합니다.
이 시각화 모드에서는 내부 및 외부 탐색을 허용하고 전체 구조를 더 잘 이해할 수 있도록 하위 항목이 있는 유형이 스택됩니다.
플랫 모드는 모든 그룹을 건너뛰고 하나의 레이어만 표시하므로 보다 간결한 보기가 생성됩니다.
Struct Layout은 다양한 시스템을 사용하여 C++ 파일을 구문 분석하고 메모리 레이아웃 정보를 추출할 수 있습니다. 빌드 시스템과 Visual Studio 설정의 복잡성과 특이성에 따라 한 가지 옵션이 다른 옵션보다 더 편리할 것입니다. 확장 옵션 창에서 사용 방법을 변경할 수 있습니다.
레이아웃 요청이 이루어지면 확장 프로그램은 다음을 수행합니다.
이 메서드는 현재 파일과 헤더를 구문 분석하는 Clang LibTooling 실행 파일을 통해 파일 위치를 처리합니다. 이 방법은 Clang AST에서 직접 데이터를 검색하므로 매우 정확한 결과를 제공할 수 있지만 모든 코드를 제대로 이해하려면 정확한 빌드 컨텍스트가 필요합니다.
clang libtooling에 대한 쿼리가 트리거되면 확장 프로그램은 활성 프로젝트 및 구성에서 다음 데이터를 수집하려고 시도합니다.
이 방법은 pdb(프로그램 데이터베이스)가 모든 사용자 정의 유형에 대한 모든 레이아웃 정보를 포함할 가능성이 높다는 사실을 활용합니다. 이 애플리케이션은 DIA SDK(디버그 인터페이스 액세스)를 사용하여 pdb를 열고 쿼리합니다. 이 시스템은 설정이 Clang 컴파일러로 컴파일될 준비가 되지 않은 경우, 빌드 시스템이 일부 특수한 경우에 매우 복잡하거나 MSVC 관련 코드가 있는 경우 유용할 수 있습니다. 주의할 점은 pdb를 최신 상태로 유지하는 쿼리를 수행하기 전에 프로젝트를 컴파일해야 한다는 것입니다.
이 프로젝트는 코드 기여에 열려 있습니다.
이 확장 프로그램이 유용하다고 생각되면 언제든지 나에게 커피 한 잔을 사줄 수 있습니다.