Heim >Backend-Entwicklung >C++ >Was sind die „Magic Names' des Visual Studio Debuggers und wie funktionieren sie?
Die Debugging-Fähigkeiten von Visual Studio reichen über die Oberfläche hinaus und nutzen vom Compiler generierte „magische Namen“ zur Verwaltung verschiedener Programmeinheiten. Diese Namen sind zwar häufig auf der Benutzeroberfläche verborgen, ermöglichen jedoch erweiterte Debugging-Funktionen und Optimierungen. Das Verständnis dieser Namensmuster ist der Schlüssel zur effektiven Navigation durch das Innenleben des Debuggers.
Während Microsoft die vollständigen Implementierungsdetails nicht öffentlich dokumentiert, liefert die Analyse der C#-GeneratedNames.cs
-Quelle wertvolle Einblicke in diese Namenskonventionen. Beachten Sie, dass diese Konventionen ohne Vorankündigung geändert werden können.
Versteckte Variablen und temporärer Speicher:
Unbenutzte lokale Variablen: Der Debugger markiert nicht verwendete lokale Variablen mit dem Suffix __Deleted$
, ein klarer Indikator für die Compileroptimierung.
Temporäre Variablen: Temporäre Variablen verwenden das CS$X$Y
Benennungsschema:
X
: Stellt die Art des Temporären dar (z. B. 0 für kurzlebig, 1 für Rückgabewerte, 2 für Sperranweisungen usw.). Ein vollständiger Schlüssel finden Sie unten.Y
: Eine fortlaufende Nummer, die die spezifische temporäre Instanz identifiziert.Vom Compiler generierte spezielle Namen:
Der Compiler generiert eindeutige Namen für eine Vielzahl interner Strukturen und Operationen, darunter:
state
)current
)locals
)CachedAnonymousMethodDelegate
)iterator
)DisplayClass
)FixedBuffer
)AnonymousType
, Field
, TPar
)BackingField
)finally
blockiert (Finally
)SiteContainer
, Site
, SiteDelegate
)ComRefCallLocal
)LockTaken
)TransparentIdentifier
)Die magische Namensformel:
Das allgemeine Muster für diese magischen Namen lautet: P<n>C__SI
, wobei:
P
: CS$
Präfix für zwischengespeicherte Delegaten und Anzeigeklasseninstanzen; andernfalls leer.<n>
: Der ursprüngliche Variablenname (falls zutreffend).C
: Ein einzelnes Zeichen (1 bis s), das den Entitätstyp angibt.S
: Ein optionales beschreibendes Suffix.I
: Eine optionale eindeutige Kennung.Temporärer variabler Artenschlüssel:
264: Temporäre Zeichenfolge mit fester Anweisung
Diese detaillierte Aufschlüsselung bietet ein klareres Verständnis der oft kryptischen Namen, die beim Debuggen in Visual Studio auftreten. Denken Sie daran, dass diese Informationen auf Beobachtungen basieren und sich bei zukünftigen Compiler-Updates ändern können.
Das obige ist der detaillierte Inhalt vonWas sind die „Magic Names' des Visual Studio Debuggers und wie funktionieren sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!