디버거에서 호출 스택 보기 및 호출 스택 창 사용

호출 스택 창에서 현재 스택에 있는 함수 또는 프로시저 호출을 볼 수 있습니다. 호출 스택 창에는 메서드와 함수가 호출되는 순서가 표시됩니다. 호출 스택은 애플리케이션의 실행 흐름을 검사하고 파악할 수 있는 좋은 방법입니다.

호출 스택의 일부에 대해 디버그 기호를 사용할 수 없는 경우 호출 스택 창에는 호출 스택의 해당 부분에 대한 올바른 정보가 표시되지 않고 대신 다음과 같이 표시될 수 있습니다.

[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]

참고 항목

표시되는 대화 상자와 메뉴 명령은 활성 설정이나 버전에 따라 여기서 설명하는 것과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 모든 설정 초기화를 참조하세요. 호출 스택 창은 Eclipse와 같은 일부 IDE의 디버그 관점과 비슷합니다.

디버거에서 호출 스택 보기

디버그하는 동안 디버그 메뉴에서창>호출 스택을 선택하거나ctrl+alt+C를 누릅니다.

Screenshot showing the Call Stack Window. 화살표는 현재 실행 포인터가 있는 스택 프레임을 나타냅니다. 기본적으로 이 스택 프레임의 정보는 소스, 로컬, 자동, 조사식디스어셈블리 창에 표시됩니다. 디버거 컨텍스트를 스택의 다른 프레임으로 변경하려면 다른 스택 프레임으로 전환합니다.

Screenshot showing the Call Stack Window.

노란색 화살표는 현재 실행 포인터가 있는 스택 프레임을 나타냅니다. 기본적으로 이 스택 프레임의 정보는 소스, 로컬, 자동, 조사식디스어셈블리 창에 표시됩니다. 디버거 컨텍스트를 스택의 다른 프레임으로 변경하려면 다른 스택 프레임으로 전환합니다.

디버깅하는 동안 호출 스택에서 예외 스택 프레임을 볼 수도 있습니다. 자세한 내용은 예외 도우미에서 호출 스택 보기를 참조하세요.

사용자 코드가 아닌 코드를 호출 스택 창에 표시

외부 또는 비 사용자 코드를 표시하려면 외부 코드 표시를 전환하고 호출 스택 창을 마우스 오른쪽 단추로 클릭하고 외부 코드 표시를 선택합니다.

외부 또는 비 사용자 코드를 표시하려면 호출 스택 도구 모음에서 외부 코드 표시 단추를 전환하거나 호출 스택 창을 마우스 오른쪽 단추로 클릭하고 외부 코드 표시를 선택합니다.

사용자 코드가 아닌 코드는 내 코드만을 사용하도록 설정했을 때 표시되지 않는 모든 코드입니다. 사용자 코드가 아닌 코드 프레임은 관리 코드에서 기본적으로 숨겨집니다. 사용자 코드가 아닌 코드 프레임 대신 다음과 같은 표기법이 표시됩니다.

[<External Code>]

다른 스택 프레임으로 전환(디버거 컨텍스트 변경)

  1. 호출 스택 창에서, 보려는 코드와 데이터가 포함된 스택 프레임을 마우스 오른쪽 단추로 클릭합니다.

    또는 호출 스택 창에서 프레임을 두 번 클릭하여 해당 프레임으로 전환할 수 있습니다.

  2. 프레임으로 전환을 선택합니다.

    선택한 스택 프레임 옆에 끝이 굽은 녹색 화살표가 나타납니다. 실행 포인터는 여전히 노란색 화살표로 표시되어 있는 원래 프레임에 그대로 있습니다. 디버그 메뉴에서 한 단계 실행 또는 계속을 선택하면 선택한 프레임이 아닌 원래 프레임에서 실행이 계속됩니다.

모든 스레드 보기 버튼을 전환하여 병렬 스택 창에서 모든 관련된 스레드를 확인합니다.

호출 스택 창의 왼쪽 위 모서리에 있는 검색 상자에 관련 검색어를 입력하여 관련 호출 스택 프레임을 검색할 수 있습니다. 관련 호출 스택 프레임이 강조 표시됩니다.

호출 스택에 있는 함수의 소스 코드 보기

호출 스택 창에서 소스 코드를 보려는 함수를 마우스 오른쪽 단추로 클릭하고 소스 코드로 이동을 선택합니다.

호출 스택 창에서 특정 함수까지 실행

호출 스택 창에서 함수를 선택하고 마우스 오른쪽 단추를 클릭한 다음, 커서까지 실행을 선택합니다.

함수 호출의 종료 지점에 중단점 설정

Set a breakpoint at a call stack function(호출 스택 함수에서 중단점 설정)을 참조하세요.

다른 스레드에서의 호출 또는 다른 스레드로의 호출 표시

호출 스택 창을 마우스 오른쪽 단추로 클릭하고 다른 스레드로 호출/다른 스레드에서 호출 포함을 선택합니다.

시각적으로 호출 스택 추적

디버그하는 동안 Visual Studio Enterprise(에만 해당)에서 호출 스택의 코드 맵을 볼 수 있습니다.

호출 스택 창에서 바로 가기 메뉴를 엽니다. 코드 맵에 호출 스택 표시(Ctrl + Shift + `)를 선택합니다.

자세한 내용은 디버그하는 동안 호출 스택의 맵 메서드를 참조하세요.

Show Call Stack on Code Map

호출 스택에 있는 함수의 디스어셈블리 코드 보기(C#, C++, Visual Basic, F#)

호출 스택 창에서 디스어셈블리 코드를 보려는 함수를 마우스 오른쪽 단추로 클릭하고 디스어셈블리로 이동을 선택합니다.

표시되는 선택적 정보 변경

호출 스택 창에서 마우스 오른쪽 단추를 클릭하고 <원하는 정보> 표시를 설정하거나 선택 취소합니다.

오토디컴파일 .NET 외부 코드

Visual Studio 2022 버전 17.7을 시작으로, Call Stack 창에서 외부 코드를 더블클릭하여 .NET 코드를 오토디컴파일할 수 있습니다. 자세한 내용은 디버깅하는 동안 .NET 어셈블리에서 소스 코드 생성하기 섹션을 참조하세요.

모듈의 기호 로드(C#, C++, Visual Basic, F#)

호출 스택 창에서 현재 기호가 로드되어 있지 않은 코드에 대한 디버깅 기호를 로드할 수 있습니다. 이러한 기호는 Microsoft 공용 기호 서버에서 다운로드한 .NET 또는 시스템 기호일 수도 있고 디버깅 중인 컴퓨터의 기호 경로에 있는 기호일 수도 있습니다.

기호 파일(.pdb) 및 원본 파일 지정을 참조하세요.

기호를 로드하려면

  1. 호출 스택 창에서 기호가 로드되지 않은 스택 프레임을 마우스 오른쪽 단추로 클릭합니다. 프레임이 흐리게 표시됩니다.

  2. 기호 로드를 가리킨 다음, Microsoft 기호 서버(사용 가능한 경우)를 선택하거나 기호 경로로 이동합니다.

기호 경로를 설정하려면

  1. 호출 스택 창의 바로 가기 메뉴에서 기호 설정을 선택합니다.

    옵션 대화 상자가 열리고 기호 페이지가 표시됩니다.

  2. 기호 설정을 선택합니다.

  3. 옵션 대화 상자에서 폴더 아이콘을 클릭합니다.

    기호 파일(.pdb) 위치 상자에 커서가 표시됩니다.

  4. 디버그 중인 컴퓨터의 기호 위치에 대한 디렉터리 경로 이름을 입력합니다. 로컬 및 원격 디버깅의 경우 이 경로는 로컬 컴퓨터의 경로입니다.

  5. 확인을 선택하여 옵션 대화 상자를 닫습니다.