공통 식 계산기 기능
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium 및 Ultimate |
이 항목에서는 언어에 따른 차이를 제외하고 디버거에 공통적인 여러 가지 식 계산기 기능에 대해 설명합니다.
암시적 변수
Visual Basic 및 C#에서 식 계산기를 사용하여 암시적 변수를 만들 수 있습니다. 이러한 암시적 변수는 범위를 벗어나는 경우가 없으며, 여타의 변수와 마찬가지로 취급할 수 있습니다.
C#의 경우 식 계산기에서 선언하는 방법으로 암시적 변수를 만들 수 있습니다. 예를 들어, 다음과 같은 C# 코드를 직접 실행 창에 입력할 수 있습니다.
int b = 100;
직접 실행 창에서 이 코드를 실행하면 변수 이름 앞에 $ 기호가 추가된 새로운 암시적 변수(이 예제의 경우 $b)가 지역 창에 나타납니다.
Visual Basic의 경우에는 식 계산기에서 암시적 변수를 선언할 수 없습니다. 그러나 Visual Basic 식 계산기에서 선언되지 않은 변수를 사용하면 암시적 변수가 자동으로 만들어집니다. Visual Basic에서는 암시적 변수가 지역 창에 나열되지 않습니다.
중단점
직접 실행 창을 사용하여 중단점이 포함된 Visual Basic 또는 C# 메서드나 함수를 실행하는 경우 이 중단점에 도달하면 호출 스택에 새 프레임이 나타납니다. 다음은 C# 예제입니다.
class Program
{
static void Main(string[] args)
{
// Breakpoint here:
int a = 20;
}
}
주석이 가리키는 위치에 중단점을 설정하고 F5 키를 눌러 프로그램을 컴파일 및 실행하면 일반적인 방식으로 중단점에 도달합니다. 직접 실행 창에 Program.Main(null)을 입력하여 Main 메서드를 실행하면 중단점에 두 번째로 도달하고 메서드에 대한 엔트리가 호출 스택에 전달됩니다.
조사식 창에서 실행
의도하지 않은 결과가 발생하지 않도록 디버거에서 한 단계씩 실행될 때마다 함수 또는 메서드 호출이 자동으로 실행되지 않습니다. 대신 아이콘을 사용하여 결과를 수동으로 업데이트할 수 있습니다. 결과는 값 열에 나타납니다. 따라서 호출을 수동으로 실행할 수 있습니다. 자세한 내용은 파생 작업과 식을 참조하십시오.
개체 ID
Visual Basic에는 이 기능이 적용되지 않습니다.
일부 응용 프로그램에서는 한 클래스의 인스턴스를 여러 개 만듭니다. 이러한 응용 프로그램에서는 식별자를 사용하여 클래스의 각 인스턴스를 구분하는 것이 유용한 경우가 많습니다. 예를 들어, 클래스의 특정 인스턴스가 예상대로 작동하지 않거나 인스턴스가 하나만 포함되어야 하는 컬렉션에 특정 인스턴스가 여러 번 삽입된 경우 식별자를 사용하면 문제를 쉽게 파악할 수 있습니다.
네이티브 개체 ID
비관리 코드를 디버깅할 때는 해당 주소를 사용하여 개체를 고유하게 식별할 수 있습니다. 이는 두 가지 점에서 중요한 의미를 갖습니다.
개체의 주소만 사용하여 개체를 추적할 수 있습니다. 즉, 주소를 사용하여 다음 작업을 수행할 수도 있습니다.
특정 주소에 있는 개체의 값을 볼 수 있습니다.
같음 여부를 확인할 수 있습니다. 개체의 주소를 개체 변수 자체와 동일한 방식으로 사용할 수 있는 경우가 많습니다.
개체(인스턴스)의 주소를 사용하여 특정 인스턴스에 있는 메서드에 중단점을 설정할 수 있습니다.
예를 들어, CMyType 클래스의 인스턴스인 개체가 있고 그 주소가 0xcccccccc인 경우를 생각해 볼 수 있습니다. 이 인스턴스의 aMethod 메서드에 다음과 같이 함수 중단점을 지정할 수 있습니다.
((CMyType *) 0xcccccccc)->aMethod
관리되는 개체 ID
관리 코드의 경우에는 개체의 주소를 사용하여 개체를 식별할 수 없습니다. 대신 CLR(공용 언어 런타임) 디버깅 서비스로 생성되고 개체에 연결되는 개체 ID라는 정수를 사용할 수 있습니다. 이 숫자는 CLR 디버깅 서비스로 생성되는 양의 정수입니다. 개체 ID 값은 개체를 고유하게 식별한다는 점을 제외하고는 의미가 없습니다.
개체 핸들은 가변 길이의 10진수 정수로 표시되며, 5#과 같이 앞에 오는 0은 사용하지 않고 뒤에는 숫자 기호(#)가 추가됩니다. 핸들은 서로 다른 디버거 데이터 창의 값 열에 나타납니다.
변수의 개체 ID를 만들려면 변수를 마우스 오른쪽 단추로 클릭하고 개체 ID 만들기를 선택합니다. 123#과 같이 숫자 뒤에 파운드 기호(#)가 추가된 값이 디버거에 나타납니다. 개체 ID를 삭제하려면 변수를 마우스 오른쪽 단추로 클릭하고 개체 ID 삭제를 선택합니다.
중단점에 도달하면 변수의 핸들을 조사식 창에 입력할 수 있습니다. 개체 ID의 값이 디버거에 표시되며, 여타의 변수와 마찬가지로 이를 확장하고 조사할 수 있습니다.
개체 ID를 사용하여 특정 인스턴스의 메서드에 중단점을 설정할 수 있습니다. 예를 들어 CMyType 클래스의 인스턴스인 개체가 있고 인스턴스에 5#이라는 개체 ID가 있는 경우를 생각해 볼 수 있습니다. CMyType 클래스에는 aMethod 메서드가 있습니다. 인스턴스 5#의 aMethod 메서드에 다음과 같이 함수 중단점을 설정할 수 있습니다.
((CMyType) 5#).aMethod
또한 개체 ID를 중단점 조건에도 사용할 수 있습니다. 다음 예제에서는 조건에서 개체 ID를 테스트하는 방법을 보여 줍니다.
this == 5#
중단점 조건을 지정하는 방법에 대한 자세한 내용은 방법: 중단점 조건 지정을 참조하십시오.