다음을 통해 공유


WinDbg에서 호출 스택 보기(클래식)

호출 스택은 프로그램 카운터의 현재 위치로 이어진 함수 호출 체인입니다. 호출 스택의 최상위 함수는 현재 함수이고, 다음 함수는 현재 함수를 호출한 함수입니다. 표시되는 호출 스택은 레지스터 컨텍스트를 변경하지 않는 한 현재 프로그램 카운터를 기반으로 합니다. 레지스터 컨텍스트를 변경하는 방법에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.

WinDbg에서 명령을 입력하거나 호출 창을 사용하여 호출 스택을 볼 수 있습니다.

디버거 명령 창

디버거 명령 창에서 k(Stack Backtrace 표시) 명령 중 하나를 입력하여 호출 스택을 볼 수 있습니다.

호출 창

k 명령 대신 호출 창에서 호출 스택을 볼 수 있습니다. 통화 창을 열려면 보기 메뉴에서 통화 스택을 선택합니다.

다음 스크린샷은 호출 창의 예를 보여줍니다.

WinDbg의 호출 창 스크린샷

호출 창의 단추를 사용하면 호출 스택의 보기를 사용자 지정할 수 있습니다. 원본 창 또는 디스어셈블리 창에서 해당 호출 위치로 이동하려면 호출 스택의 줄을 두 번 클릭하거나 줄을 선택하고 Enter 키를 누릅니다. 또한 이 작업은 로컬 컨텍스트 를 선택한 스택 프레임으로 변경합니다. 이 시점부터 실행하는 방법에 대한 자세한 내용은 대상 제어를 참조하세요.

사용자 모드에서 스택 추적은 현재 스레드의 스택을 기반으로 합니다. 현재 스레드 스택에 대한 자세한 내용은 프로세스 및 스레드 제어를 참조하세요.

커널 모드에서 스택 추적은 현재 레지스터 컨텍스트를 기반으로 합니다. 레지스터 컨텍스트를 특정 스레드, 컨텍스트 레코드 또는 트랩 프레임과 일치하도록 설정할 수 있습니다. 레지스터 컨텍스트를 설정하는 방법에 대한 자세한 내용은 컨텍스트 등록을 참조하세요.

호출 창에는 여러 단추가 포함된 도구 모음이 있으며 추가 명령이 있는 바로 가기 메뉴가 있습니다. 이 메뉴에 액세스하려면 제목 표시줄을 길게 누르거나 마우스 오른쪽 단추로 클릭하거나 창의 오른쪽 위 모서리 근처에 있는 아이콘을 선택합니다(WinDbg의 통화 창 도구 모음 바로 가기 메뉴를 표시하는 단추의 스크린샷).

  • 원시 인수는 함수에 전달되는 처음 세 개의 매개 변수를 표시합니다. x86 기반 프로세서에서 이 디스플레이에는 함수에 전달되는 처음 세 개의 매개 변수("Args to Child")가 포함됩니다.

  • Func 정보는 FPO(Frame Pointer Omission) 데이터 및 함수에 대한 기타 내부 정보를 표시합니다. 이 명령은 x86 기반 프로세서에서만 사용할 수 있습니다.

  • 소스 는 함수 이름 뒤의 원본 모듈 이름과 줄 번호를 표시합니다(디버거에 이 정보가 있는 경우).

  • 추가기 에서 다양한 프레임 관련 주소를 표시합니다. x86 기반 프로세서에서 이 디스플레이에는 스택 프레임("ChildEBP")의 기본 포인터와 반환 주소("RetAddr")가 포함됩니다.

  • 프레임 num은 프레임 번호를 표시합니다. 프레임은 항상 0부터 시작하여 연속적으로 번호가 매겨집니다.

  • Arg 형식 은 스택의 함수에 의해 예상되고 수신되는 인수에 대한 자세한 정보를 표시합니다.

  • 항상 부동하면 도킹 위치로 끌어도 창이 도킹되지 않은 상태로 유지됩니다.

  • 프레임을 사용하여 이동 하면 창이 도킹 해제된 경우에도 WinDbg 프레임을 이동할 때 창이 이동합니다.

추가 정보

레지스터 컨텍스트 및 로컬 컨텍스트에 대한 자세한 내용은 컨텍스트 변경을 참조하세요.