Visual Studio Extension for C++ 構造体メモリ レイアウトの視覚化
Visual Studio Marketplace 2022 から最新版をダウンロード
Visual Studio Marketplace 2019 から最新版をダウンロード
C++ では、構造レイアウトはさまざまな要因の影響を受ける可能性があります。パフォーマンスの高いデータ キャッシュ指向のコードを生成したり、構造メモリのフットプリントを削減したりするには、コードが作成、更新、削除、またはデバッグされるのと同じ場所でのクラス レイアウトを認識することが重要です。この拡張機能を使用すると、プログラマーは 1 回クリックするだけで Visual Studio 内で構造を視覚化できます。
メモリ レイアウトを視覚化するには、C++ 構造体定義の上部を右クリックし、 [構造体レイアウトの表示]を選択します (またはAlt+Lを押します)。
この視覚化モードでは、子を持つ型が積み重ねられて、出入りができるようになり、全体の構造をよりよく把握できるようになります。
フラット モードでは、すべてのグループがスキップされ、1 つのレイヤーのみが表示され、よりコンパクトなビューが生成されます。
Struct Layout は、さまざまなシステムを使用して C++ ファイルを解析し、メモリ レイアウト情報を抽出できます。ビルド システムと Visual Studio セットアップの複雑さと癖に応じて、1 つのオプションが他のオプションよりも便利になります。使用する方法は、「拡張オプション」ウィンドウで変更できます。
レイアウト要求が行われると、拡張機能は次のことを行います。
このメソッドは、現在のファイルとヘッダーを解析する Clang LibTooling 実行可能ファイルを通じてファイルの場所を処理します。この方法では、Clang AST から直接データを取得するため、非常に正確な結果が得られますが、すべてのコードを適切に理解するには正確なビルド コンテキストが必要です。
Clang libtooling へのクエリがトリガーされると、拡張機能はアクティブなプロジェクトと構成から次のデータを収集しようとします。
この方法は、pdb (プログラム データベース) にすべてのユーザー定義タイプのすべてのレイアウト情報が含まれる可能性が高いという事実を利用します。このアプリケーションは、DIA SDK (デバッグ インターフェイス アクセス) を使用して、pdb を開いてクエリを実行します。このシステムは、セットアップが Clang コンパイラーでコンパイルする準備ができていない場合、ビルド システムが非常に複雑で特殊なケースに遭遇する場合、または MSVC 固有のコードがある場合に役立ちます。注意点は、pdb を最新の状態に保つためにクエリを実行する前にプロジェクトをコンパイルする必要があるということです。
このプロジェクトはコードの寄稿を受け付けています。
この拡張機能が役立つと思われた場合は、いつでも私にコーヒーを買ってきてください。