Visual Studio のデバッグ機能は表面を超えて拡張され、コンパイラが生成した「マジック名」を使用してさまざまなプログラム エンティティを管理します。これらの名前は、多くの場合ユーザー インターフェイスには表示されませんが、高度なデバッグ機能と最適化を可能にします。 これらの命名パターンを理解することは、デバッガーの内部動作を効果的にナビゲートするための鍵となります。
Microsoft は完全な実装の詳細を公に文書化していませんが、C# GeneratedNames.cs
ソースを分析すると、これらの命名規則に関する貴重な洞察が明らかになります。これらの規則は予告なく変更される場合があることに注意してください。
隠し変数と一時ストレージ:
未使用のローカル変数: デバッガは、コンパイラの最適化を明確に示す、未使用のローカル変数に __Deleted$
サフィックスのタグを付けます。
一時変数: 一時変数は CS$X$Y
命名スキームを使用します:
X
: 一時ファイルの性質を表します (例: 0 は短期間、1 は戻り値、2 はロックステートメントなど)。 完全なキーは以下に提供されます。Y
: 特定の一時インスタンスを識別する連続番号。コンパイラによって生成された特殊名:
コンパイラは、次のようなさまざまな内部構造および操作に対して一意の名前を生成します。
state
)current
)locals
)CachedAnonymousMethodDelegate
)iterator
)DisplayClass
)FixedBuffer
)AnonymousType
、Field
、TPar
)BackingField
)finally
ブロック (Finally
)SiteContainer
、Site
、SiteDelegate
)ComRefCallLocal
)LockTaken
)TransparentIdentifier
)マジック名の公式:
これらのマジック名の一般的なパターンは次のとおりです: P<n>C__SI
、ここで:
P
: キャッシュされたデリゲートと表示クラス インスタンスの CS$
プレフィックス。それ以外の場合は空です。<n>
: 元の変数名 (該当する場合)。C
: エンティティのタイプを示す 1 文字 (1 から s)。S
: オプションの説明的な接尾辞。I
: オプションの一意の識別子。一時変数種類キー:
264: 文字列固定ステートメント一時
この詳細な内訳により、Visual Studio でのデバッグ中に頻繁に発生する難解な名前をより明確に理解できます。 この情報は観察に基づいており、将来のコンパイラの更新によって変更される可能性があることに注意してください。
以上がVisual Studio デバッガーの「マジック名」とは何ですか? また、それらはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。