Visual Studio에서 직접 실행 창을 어떻게 사용합니까?


121

직접 실행 창은 응용 프로그램을 디버깅하는 데 매우 유용한 도구입니다. 중단 점 컨텍스트에서 유효한 코드 문을 실행하고 값을 검사하는 데 사용할 수 있습니다. 또한 언어 기능을 배우기 위해 코드 조각을 입력하는데도 사용합니다.

직접 실행 창을 어떻게 사용합니까?


개별 Visual Studio 명령 실행을 참조하는 경우 [Immediate Window] [1]에서 예제를 살펴보십시오. 즉석 창을 통해 표현식을 평가하고, 문을 실행하고, 변수 값을 인쇄하는 방법 등을 보여줍니다. [1] : msdn.microsoft.com/en-us/library/f177hahy(VS.80).aspx
TStamper

2
목록을 찾기 어려운 몇 가지 특수 명령이 있습니다. msdn.microsoft.com/en-us/library/ms171362(v=vs.100).aspx windbg의 일부 기능을 사용할 수 있습니다. 주소가 주어지면 가장 가까운 기호를 찾을 수 있습니다. (ln) 멍청하게 꺼진 것 같아요. 나는 windbg의 dt 명령을 사용하여 구조체 등의 유형을 표시하고 싶습니다. 최소한 객체 변수를 입력하여 값이있는 목록의 모든 구성원을 가져올 수 있습니다. (노드 열기를 시도하는 대신 노드 게임을 닫으십시오.)
kalbr

Visual Studio 2017의 경우 관련 문서 링크는 docs.microsoft.com/en-us/visualstudio/ide/reference/…입니다.
Pac0

답변:


130

Visual Studio의 직접 실행 창의 한 가지 좋은 기능은 특히 클라이언트 코드에서 호출되지만 변수 할당의 일부 가 아닌 경우 메서드의 반환 값을 평가하는 기능 입니다. 언급했듯이 디버그 모드에서는 변수와 상호 작용하고이를 수행하는 데 중요한 역할을하는 메모리에서 표현식을 실행할 수 있습니다.

예를 들어 다음과 같이 두 숫자의 합을 반환하는 정적 메서드가있는 경우 :

private static int GetSum(int a, int b)
{
    return a + b;
}

그런 다음 직접 실행 창에서 다음을 입력 할 수 있습니다.

? GetSum(2, 4)
6

보시다시피 이것은 정적 메서드에 대해 정말 잘 작동합니다. 그러나 메서드가 비 정적이면 메서드가 속한 객체에 대한 참조와 상호 작용해야합니다.

예를 들어, 다음과 같은 클래스가 있다고 가정 해 보겠습니다.

private class Foo
{
    public string GetMessage()
    {
        return "hello";
    }
}

개체가 이미 메모리에 있고 범위 내에있는 경우 현재 중단 점 이전에 (또는 적어도 디버그 모드에서 코드가 일시 중지되기 전에) 인스턴스화되어있는 한 직접 실행 창에서 호출 할 수 있습니다 .

? foo.GetMessage(); // object ‘foo’ already exists
"hello"

또한 메모리의 기존 인스턴스에 의존하지 않고 직접 메서드와 상호 작용하고 테스트하려면 직접 실행 창에서 고유 한 인스턴스를 인스턴스화 할 수 있습니다 .

? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"

추가 평가, 계산 등을 수행하려면 한 단계 더 나아가 메서드의 결과를 변수에 임시로 할당 할 수 있습니다.

? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"

또한 새 개체에 대한 변수 이름을 선언하지 않고 메서드 / 함수 중 하나를 실행하려면 다음을 수행하십시오.

? new Foo().GetMessage()
"hello" 

메서드의 값을 확인하는 매우 일반적인 방법은 클래스의 메서드 이름을 선택하고 Watch 창에서 현재 값을 볼 수 있도록 'Add Watch'를 수행하는 것입니다. 그러나 다시 한 번 개체를 인스턴스화하고 유효한 값을 표시하려면 범위 내에 있어야합니다. 이것은 직접 실행 창을 사용하는 것보다 훨씬 덜 강력하고 제한적입니다.

검사 방법과 함께 간단한 수학 방정식을 수행 할 수 있습니다.

? 5 * 6
30

또는 값 비교 :

? 5==6
false
? 6==6
true

직접 실행 창에 직접있는 경우 물음표 ( '?')는 필요하지 않지만 명확성을 위해 여기에 포함되어 있습니다 (입력 된 식과 결과를 구분하기 위해). 그러나 명령 창에 있고 필요한 경우 직접 실행 창에서 몇 가지 빠른 작업을 수행 한 다음 문 앞에 '?' 그리고 떠나세요.

Intellisense는 직접 실행 창에서 작동합니다. 하지만 때로는 약간 일치하지 않을 수 있습니다. 내 경험상 디버그 모드에서만 사용할 수 있지만 디자인이 아닌 디버그 모드에서는 사용할 수없는 것 같습니다.

불행히도 직접 실행 창의 또 다른 단점은 루프를 지원하지 않는다는 것입니다.


1
당신은 어떻게합니까 찾아 직접 실행 창을?
jpaugh

1
Ctrl + Alt + I또는 디버그-> Windows-> 즉시
Ray

11

직접 실행 창을 사용하여 명령 실행

직접 실행 창을 사용하여 명령을 실행할 수도 있습니다. a >다음에 명령을 입력하십시오.

여기에 이미지 설명 입력

예를 들어 >shell cmd명령 셸을 시작합니다 (예를 들어 Visual Studio에 전달 된 환경 변수를 확인하는 데 유용 할 수 있음). >cls화면이 지워집니다.

다음은 고유 한 별칭을 가질 정도로 일반적으로 사용되는 명령 목록입니다. https://msdn.microsoft.com/en-us/library/c3a0kd3x.aspx


2
좋은 팁. 사실, 이것은 내가 사용하는 또 다른 트릭과 잘 어울립니다 >open Filename. 솔루션에서 선택한 파일을 열고 파일 이름 완성 기능도 있습니다.
Phillip Ngan

6

직접 실행 창은 식을 디버그 및 평가하고, 문을 실행하고, 변수 값을 인쇄하는 데 사용됩니다. 디버깅 중에 개발 언어에서 평가하거나 실행할 표현식을 입력 할 수 있습니다.

직접 실행 창을 표시하려면 디버그> Windows> 즉시를 선택하거나 Ctrl-Alt-I를 누릅니다.

여기에 이미지 설명 입력

다음은 직접 실행 창을 사용한 예입니다.

int Sum(int x, int y) { return (x + y);}
void main(){
int a, b, c;
a = 5;
b = 7;
c = Sum(a, b);
char temp = getchar();}

중단 점 추가

여기에 이미지 설명 입력

호출 명령

여기에 이미지 설명 입력

https://msdn.microsoft.com/en-us/library/f177hahy.aspx

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.