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~s).S
: 선택적 설명 접미사입니다.I
: 선택적 고유 식별자입니다.임시 변수 종류 키:
264: 문자열 고정 문 임시
이 세부 분석을 통해 Visual Studio에서 디버깅하는 동안 자주 발생하는 난해한 이름을 더 명확하게 이해할 수 있습니다. 이 정보는 관찰을 바탕으로 한 것이며 향후 컴파일러 업데이트에 따라 변경될 수 있다는 점을 기억하세요.
위 내용은 Visual Studio 디버거의 '마법 이름'은 무엇이며 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!