다음을 통해 공유


Visual Studio 디버거의 가상 변수

의사 변수는 변수 창 또는 QuickWatch 대화 상자에 특정 정보를 표시하는 데 사용되는 용어입니다. 일반 변수를 입력하는 것과 동일한 방식으로 의사 변수를 입력할 수 있습니다. 그러나 의사 변수는 변수가 아니며 프로그램의 변수 이름에 해당하지 않습니다.

Example

네이티브 코드 애플리케이션을 작성하고 애플리케이션에 할당된 핸들 수를 보려고 하는 경우를 가정해 보겠습니다. 감시 창에서 이름 열에 다음 의사 변수를 입력하고, Return 키를 눌러 평가하십시오.

$handles

네이티브 코드에서는 다음 표에 나와 있는 의사 변수를 사용할 수 있습니다.

의사 변수 기능
$err SetLastError 함수를 사용하여 설정된 마지막 오류 값을 표시합니다. 표시되는 값은 GetLastError 함수에서 반환되는 값을 나타냅니다.

이 값의 디코딩된 형식을 확인하는 데 사용합니다 $err,hr . 예를 들어 마지막 오류가 3, $err,hr이면 ERROR_PATH_NOT_FOUND : The system cannot find the path specified.을 표시합니다.
$handles 애플리케이션에 할당된 핸들 수를 표시합니다.
$vframe 현재 스택 프레임의 주소를 표시합니다.
$tid 현재 스레드의 스레드 ID를 표시합니다.
$env 문자열 뷰어에 환경 블록을 표시합니다.
$cmdline 프로그램을 시작한 명령줄 문자열을 표시합니다.
$pid 프로세스 ID를 표시합니다.
$ registername

또는

@ registername
레지스터 registername의 내용을 표시합니다.

일반적으로 레지스터 이름을 입력하기만 하면 레지스터 콘텐츠를 표시할 수 있습니다. 이 구문을 사용해야 하는 유일한 경우는 레지스터 이름이 변수 이름을 오버로드하는 경우입니다. 레지스터 이름이 현재 범위의 변수 이름과 같으면 디버거는 이름을 변수 이름으로 해석합니다. $ 레지스터 이름 또는 @레지스터 이름이 유용할 때입니다.
$clk 시계 주기의 시간을 표시합니다.
$user 애플리케이션을 실행하는 계정에 대한 계정 정보가 포함된 구조를 표시합니다. 보안상의 이유로 암호 정보가 표시되지 않습니다.
$exceptionstack 현재 Windows 런타임 예외의 스택 추적을 표시합니다. $ exceptionstack 는 UWP 앱에서만 작동합니다. $ exceptionstack 는 C++ 및 SEH 예외에 대해 지원되지 않습니다.
$returnvalue 메서드의 반환 값을 표시합니다.

C#에서는 다음 표에 표시된 의사 변수를 사용할 수 있습니다.

의사 변수 기능
$exception 마지막 예외에 대한 정보를 표시합니다. 예외가 발생하지 않은 경우 평가 $exception 하면 오류 메시지가 표시됩니다.

예외 도우미를 사용하지 않도록 설정 $exception 하면 예외가 발생하면 로컬 창에 자동으로 추가됩니다.
$user 애플리케이션을 실행하는 계정에 대한 계정 정보가 포함된 구조를 표시합니다. 보안상의 이유로 암호 정보가 표시되지 않습니다.
$returnvalue .NET 메서드의 반환 값을 표시합니다.
$threadSmallObjectHeapBytes 현재 스레드에서 작은 개체 힙에 할당된 총 바이트 수를 표시합니다. (.NET 6 이상)
$threadUserOldHeapBytes 현재 스레드에 의해 사용자 이전 힙에 할당된 총 바이트 수를 표시합니다. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6 이상)

Visual Basic에서는 다음 표에 표시된 의사 변수를 사용할 수 있습니다.

의사 변수 기능
$exception 마지막 예외에 대한 정보를 표시합니다. 예외가 발생하지 않은 경우 평가 $exception 하면 오류 메시지가 표시됩니다.
$delete 또는 $$delete 직접 실행 창에서 만든 암시적 변수를 삭제합니다. 구문이 $delete, 또는$delete,입니다..
$objectids 또는 $listobjectids 모든 활성 개체 ID를 지정된 식의 자식으로 표시합니다. 구문은 $objectid, 또는$listobjectids,입니다..
$ N# 개체 ID가 N과 같은 개체를 표시합니다.
$dynamic IDynamicMetaObjectProvider를 구현하는 개체에 대한 특수한 동적 뷰 노드를 표시합니다. 인터페이스. 구문은 $dynamic,입니다. 이 기능은 .NET Framework 버전 4 이상을 사용하는 코드에만 적용됩니다.