문제를 디버그하려고 할 때 변수가 특정 앱 상태에 있을 것으로 예상되는 값을 저장하는지 여부를 확인하려고 하는 경우가 많습니다. 디버거의 가장 유용한 기능 중 일부는 변수를 검사할 수 있는 기능입니다.
이 문서에서는 Visual Studio에서 디버거를 사용하여 변수를 검사하고 반환 값을 보는 방법을 보여 줍니다. 디버거는 다음을 포함하여 이러한 작업을 수행하는 몇 가지 편리한 방법을 제공합니다.
- 코드 편집기에서 데이터 팁과 인라인 반환 값을 볼 수 있습니다.
- 디버거 창(자동, 지역 및 조사식 창)에서 변수 값을 볼 수 있습니다.
- 시각화 도우미에서 큰 문자열 또는 복합 .NET 개체를 볼 수 있습니다.
이러한 기능은 디버깅하는 동안에만 사용할 수 있습니다. 디버깅 세션을 시작하는 방법을 알아보려면 디버깅 시작 및 중단 모드입력을 참조하세요.
메모
코드를 처음 디버그하려고 시도한 경우 이 문서를 진행하기 전에 절대 초보자를 위한 디버깅 및 디버깅 기술 및 도구를 읽어보는 것이 좋습니다.
코드 편집기에서 변수 보기
디버깅할 때 코드 편집기에서 개체의 속성 값을 빠르게 확인하는 방법을 원하는 경우가 많으며, 데이터 팁은 이를 수행하는 좋은 방법입니다.
디버거에서 일시 중지된 상태에서 마우스로 개체를 마우스로 가리키면 해당 값 또는 기본 속성 값이 표시됩니다.
변수에 속성이 있는 경우 개체를 확장하여 모든 속성을 볼 수 있습니다.
데이터 팁 사용에 대한 자세한 내용은 데이터 팁데이터 값 보기를 참조하세요.
코드 편집기에서 메서드 호출의 인라인 반환 값 보기
.NET 및 C++ 코드에서는 메서드 호출을 단계별로 실행하거나 종료할 때 반환 값을 검사할 수 있습니다. 이는 반환 값이 지역 변수에 저장되지 않은 경우에 유용할 수 있습니다. 메서드를 매개 변수로 사용하거나 다른 메서드의 반환 값으로 사용할 수 있습니다.
Visual Studio 2022 버전 17.12부터 자동 창뿐만 아니라 인라인으로 메서드 호출의 반환 값을 볼 수 있습니다.
Copilot를 사용하도록 설정하면 반환 값에 대한 데이터 팁에 표시되는 코필로트 요청 단추를 사용하여 인라인 반환 값과 관련된 대상 지원을 받을 수도 있습니다.
변수 감시 설정
감시 창을 사용하여 감시하고자 하는 변수(또는 식)를 지정할 수 있습니다.
디버깅하는 동안 코드 편집기에서 개체를 오른쪽 클릭하고 워치 추가를 선택합니다. 감시 창이 열립니다.
이 예제에서는 개체에 대한 조사식 집합을 사용했으며 디버거를 통해 이동할 때 해당 값이 변경되는 것을 볼 수 있습니다. 다른 변수 창과 달리 조사식 창에는 항상 보고 있는 변수가 표시됩니다(범위를 벗어나면 회색으로 표시됨).
자세한 내용은 Watch 및 QuickWatch 창을 사용하여 조사식을 설정하는 방법을 참조하세요.
AI 지원 받기
코필로트가 있는 경우 코드 편집기 또는 자동 또는 지역 창에서 변수를 보는 동안 AI 지원을 받을 수 있습니다. 디버깅하는 동안 변수를 마우스 오른쪽 단추로 클릭하고 코필로트 요청 스크린샷을 사용합니다. 이 시나리오에서 Copilot는 질문의 컨텍스트를 이미 알고 있으므로 채팅에서 컨텍스트를 직접 제공할 필요가 없습니다. 자세한 내용은 Copilot과 함께 디버그 을 참조하세요.
디버거 창에서 변수 검사(자동 및 로컬)
디버깅하는 동안 자동 및 지역 창에 변수 값이 표시됩니다. 창은 디버깅 세션 중에만 사용할 수 있습니다. 자동 창에는 디버거가 일시 중지된 지점의 현재 문장 주변에서 사용되는 변수들이 표시됩니다. Locals 창에는 로컬 범위에 정의된 변수(일반적으로 현재 함수 또는 메서드)가 표시됩니다.
디버깅하는 동안 자동 창을 열려면 디버그>창>자동을 선택하거나 Ctrl+Alt+V>A를 누르세요.
자동 창은 C#, Visual Basic, C++및 Python 코드에서 사용할 수 있지만 JavaScript 또는 F#에는 사용할 수 없습니다.
디버깅하는 동안 로컬 창을 열려면 디버그>Windows>Locals선택하거나 Alt+4누릅니다.
확장 가능한 배열 및 개체가 자동 및 지역 창에 표시됩니다. 변수 이름의 왼쪽에 있는 화살표를 선택하여 필드와 속성을 표시하도록 보기를 확장합니다. 다음은 System.IO.FileStream 창에 있는 개체의 예입니다.
Locals 또는 자동 창의 빨간색 값은 마지막 평가 이후 값이 변경되었음을 의미합니다. 이전 디버깅 세션에서 변경되거나 창의 값을 변경했기 때문일 수 있습니다.
디버거 창의 기본 숫자 형식은 10진수입니다. 16진수로 변경하려면 지역 또는 자동 창을 마우스 오른쪽 단추로 클릭하고 16진수 표시선택합니다. 이 변경 내용은 모든 디버거 창에 영향을 줍니다.
자동 또는 지역 창에서 변수 값 편집
Autos 또는 Locals 창에서 대부분의 변수 값을 편집하려면 값을 두 번 클릭하고 새 값을 입력합니다.
값에 대한 식(예: a + b
)을 입력할 수 있습니다. 디버거는 가장 유효한 언어 식을 허용합니다.
네이티브 C++ 코드에서는 변수 이름의 컨텍스트를 한정해야 할 수 있습니다. 자세한 내용은 Context 연산자(C++)참조하세요.
주의
값과 식을 변경하기 전에 결과를 이해해야 합니다. 몇 가지 가능한 문제는 다음과 같습니다.
자동 또는 지역 창에서 검색
각 창 위의 검색 창을 사용하여 자동 또는 로컬 창의 이름, 값 및 형식 열에서 키워드를 검색할 수 있습니다. Enter 키를 누르거나 화살표 중 하나를 선택하여 검색을 실행합니다. 진행 중인 검색을 취소하려면 검색 창에서 "x" 아이콘을 선택합니다.
왼쪽 및 오른쪽 화살표(각각 Shift+F3 및 F3)를 사용하여 찾은 일치 항목 사이를 탐색합니다.
로컬 창에서 검색의 스크린샷
로컬 창에서 검색의 스크린샷
검색을 좀 더 철저하게 만들려면 자동 또는 로컬 창 맨 위에 있는 검색 심층 드롭다운 목록을 사용하여 중첩된 개체로 검색할 수준 수를 선택할 수 있습니다.
자동 또는 지역 창에서 속성 고정하기
메모
이 기능은 .NET Core 3.0 이상에서 지원됩니다.
고정 가능한 속성 도구를 사용하여 자동 및 지역 창에서 해당 속성으로 개체를 신속하게 검사할 수 있습니다. 이 도구를 사용하려면 속성을 마우스로 가리키고 나타나는 고정 아이콘을 선택하거나 마우스 오른쪽 단추를 클릭하여 나타나는 상황에 맞는 메뉴에서 멤버를 즐겨찾기로 고정 옵션을 선택합니다. 이렇게 하면 해당 속성이 개체의 속성 목록 맨 위로 버블되고 속성 이름과 값이 Value 열에 표시됩니다. 속성을 고정 해제하려면 고정 아이콘을 다시 선택하거나 상황에 맞는 메뉴에서 멤버 즐겨찾기 해제 옵션을 선택합니다.
자동 또는 지역 창에서 개체의 속성 목록을 볼 때 속성 이름을 토글하고 고정되지 않은 속성을 필터링할 수도 있습니다. 자동 또는 로컬 창 위의 도구 모음에서 단추를 선택하여 각 옵션에 액세스할 수 있습니다.
자동 변수 또는 지역 변수 창의 컨텍스트 변경
디버그 위치 도구 모음을 사용하여 Autos 및 Locals 창의 컨텍스트를 변경하는 원하는 함수, 스레드 또는 프로세스를 선택할 수 있습니다.
디버그 위치 도구 모음을 사용하려면, 도구 모음 영역의 빈 부분을 클릭한 후, 드롭다운 목록에서 디버그 위치을 선택하거나 보기를 선택하고,>도구 모음,>디버그 위치를 선택하십시오.
중단점을 설정하고 디버깅을 시작합니다. 중단점이 적중되면 실행이 일시 중지되고 디버그 위치 도구 모음에서 위치를 볼 수 있습니다.
자동 창의 언어 차이(C#, C++, Visual Basic, Python)
다른 코드 언어는 자동 창에 다른 변수를 표시합니다.
C# 및 Visual Basic에서 자동 창에는 현재 또는 이전 줄에 사용된 변수가 표시됩니다. 예를 들어 C# 또는 Visual Basic 코드에서 다음 네 개의 변수를 선언합니다.
public static void Main() { int a, b, c, d; a = 1; b = 2; c = 3; d = 4; }
줄
c = 3;
중단점을 설정하고 디버거를 시작합니다. 실행이 일시 중지되면 Auto 창이 표시됩니다.줄
c
아직 실행되지 않았기 때문에c = 3
값은 0입니다.C++에서 자동 창에는 실행이 일시 중지된 현재 줄 앞에 세 줄 이상 사용된 변수가 표시됩니다. 예를 들어 C++ 코드에서 6개의 변수를 선언합니다.
void main() { int a, b, c, d, e, f; a = 1; b = 2; c = 3; d = 4; e = 5; f = 6; }
줄
e = 5;
중단점을 설정하고 디버거를 실행합니다. 실행이 중지되면 Autos 창이 표시됩니다.줄
e
아직 실행되지 않았기 때문에 변수e = 5
초기화되지 않았습니다.
자동 창에서 반환 값 보기
다음 예제에서 이 C# 코드는 두 함수의 반환 값을 추가합니다.
static void Main(string[] args)
{
int a, b, c, d;
a = 1;
b = 2;
c = 3;
d = 4;
int x = sumVars(a, b) + subtractVars(c, d);
}
private static int sumVars(int i, int j)
{
return i + j;
}
private static int subtractVars(int i, int j)
{
return j - i;
}
자동 창에서 sumVars()
및 subtractVars()
메서드 호출의 반환 값을 보려면 다음을 수행합니다.
int x = sumVars(a, b) + subtractVars(c, d);
줄에 중단점을 설정합니다.디버깅을 시작하고 중단점에서 실행이 일시 중지되면 단계 이동을 선택하거나 F10을 누르세요. 자동 창에서 다음 반환 값을 볼 수 있습니다.
시각화 도우미를 열어 변수 검사
Visual Studio에서 디버깅하는 동안 데이터를 보다 쉽게 검사할 수 있도록 기본 제공 시각화 도우미를 사용하여 큰 문자열 또는 복잡한 개체를 볼 수 있습니다. 다음은 그 예입니다.
- 문자열 시각화 도우미는 데이터 팁 또는 디버거 창에 너무 긴 텍스트, XML, HTML 및 JSON 문자열을 표시합니다. 잘못된 형식의 문자열을 식별하는 데 도움이 됩니다. 자세한 내용은 문자열 시각화 도우미 보기 문자열을 참조하세요.
- DataSet 및 IEnumerable 시각화 도우미는 테이블 형식 시각화 도우미에 .NET 컬렉션 개체를 표시합니다. 자세한 내용은 Visual Studio ) 개체의테이블 형식 시각화 도우미를 참조하세요.
시각화 도우미는 자동 창, 데이터 팁 및 기타 디버거 창에 표시됩니다.
메모
시각화 도우미에서 XAML 또는 WPF UI 요소를 검사해야 하는 경우, 디버깅하는 동안 XAML 속성을 검사하거나 WPF 트리 시각화 도우미를 사용하는 방법을참조하십시오.
시각화 도우미를 열려면 디버깅 중에 일시 중지해야 합니다. 지원되는 시각화 값이 있는 변수에 마우스를 올려놓고, 돋보기 아이콘 을 선택합니다.
열기
열기
관련 콘텐츠
- 디버깅이란?
- 디버깅 기술 및 도구
- 먼저 디버깅 살펴보기
- 디버거 창