다음을 통해 공유


자습서: Visual Studio의 디버거에서 코드 실행

이 문서에서는 Visual Studio Python으로 작업하기자습서 시리즈의 4단계를 제공합니다.

Visual Studio는 프로젝트 관리 기능, 풍부한 편집 환경, 대화형 창및 Python 코드에 대한 모든 기능을 갖춘 디버깅을 제공합니다. 이 자습서 시리즈의 4단계에서는 디버거 사용하여 루프의 모든 반복을 포함하여 코드를 단계별로 실행합니다. 디버거특정 조건이 충족될 때마다 프로그램을 일시 중지할 수 있습니다. 프로그램이 일시 중지되면 언제든지 전체 프로그램 상태를 검사하고 변수 값을 변경할 수 있습니다. 이러한 작업은 프로그램 버그를 추적하는 데 필수적이며 정확한 프로그램 흐름을 따르기 위한 유용한 보조 기능도 제공합니다.

자습서의 4단계에서는 다음 방법을 알아봅니다.

  • Visual Studio의 디버거 Python 코드 실행
  • 중단점 및 조건 설정
  • 프로그램 상태 검사 및 변수 변경
  • 디버거 창 및 작업 살펴보기

필수 구성 요소

Python 파일 준비

디버깅 연습을 준비하려면 다음 단계에 따라 더 강력한 코드를 포함하도록 Python 프로젝트 파일을 업데이트합니다.

  1. 편집기에서 Python 프로젝트 파일(.py)을 엽니다.

  2. 파일의 코드를 다음 코드로 바꿉다. 이 버전의 코드는 make_dot_string 함수를 확장하므로 디버거에서 개별 단계를 검사할 수 있습니다. for 루프를 main 함수로 이동하고 main 함수를 호출하여 명시적으로 실행합니다.

    from math import cos, radians
    
    # Create a string with spaces proportional to a cosine of x in degrees
    def make_dot_string(x):
        rad = radians(x)                             # cos works with radians
        numspaces = int(20 * cos(rad) + 20)          # Scale to 0-40 spaces
        st = ' ' * numspaces + 'o'                   # Place 'o' after the spaces
        return st
    
    def main():
        for i in range(0, 1800, 12):
            s = make_dot_string(i)
            print(s)
    
    main()
    

디버깅 시작

이제 디버거업데이트된 Python 코드 확인을 시작할 준비가 되었습니다.

  1. 도구 모음에서 디버그>디버깅 선택하거나 F5 바로 가기 키를 사용하여 코드가 제대로 작동하는지 확인합니다. 이러한 명령은 디버거코드를 실행합니다.

    디버거 문제를 검색하지 않으므로 프로그램이 성공적으로 실행됩니다. 출력 창이 열리고 코사인 웨이브 패턴의 몇 가지 반복이 표시됩니다. 출력 창을 닫을 키를 선택합니다.

    프로그램이 완료되면 출력 창을 자동으로 닫려면 도구>옵션선택하고, Python>디버깅 탭을 확장하고, 프로세스가 정상적으로 종료되면 입력 대기 옵션을 선택 취소합니다.

  2. 다음 방법 중 하나를 사용하여 for 루프 문에 중단점을 설정합니다.

    • 코드 줄의 왼쪽 여백에서 선택합니다.
    • 코드 줄을 마우스 오른쪽 버튼으로 클릭하고 중단점>중단점 삽입를 선택합니다.
    • 코드 줄에 삽입점을 배치하고 디버그>중단점 전환을 선택합니다(또는 F9 바로 가기 키를 사용).

    중단점은 표시된 지점에서 코드 실행을 중지하므로 프로그램 상태를 검사할 수 있습니다. 설정된 중단점이 있는 각 줄에 빨간색 점이 나타납니다.

    visual Studio의 디버거에서 중단점을 설정하는 방법을 보여 주는 스크린샷

  3. 디버거 다시 시작합니다(F5). 프로그램의 실행 코드는 설정된 중단점이 있는 줄에서 중지됩니다. 이제 호출 스택을 검사하고 실행 중인 프로그램 코드의 이 상태에 대한 변수를 검사할 수 있습니다.

    Visual Studio는 다음 창을 포함하여 프로그램 코드 및 실행 데이터를 관찰하는 여러 가지 방법을 제공합니다.

    • 호출 스택 프로그램 코드의 함수 및 메서드 호출 기록을 보여 줍니다.
    • 범위 내에 있는 정의된 변수들은 자동 창에 나타납니다.
    • Locals 보기는 코드에서 정의되기 전에 Visual Studio가 현재 범위(함수 포함)에서 찾은 모든 변수를 표시합니다.

    사용 가능한 창 및 작업의 전체 목록을 보려면 디버그>Windows선택합니다.

    중단점이 발견되면 디버거 창을 열어 프로그램 상태를 볼 수 있습니다.

    Visual Studio가 설정된 중단점에서 중지될 때 프로그램 상태를 표시하는 디버거 창의 스크린샷

디버거 작업 사용

Visual Studio가 중단점에서 코드 실행을 중지하는 경우 코드를 단계별로 실행하거나 코드 블록을 실행하는 데 사용할 수 있는 몇 가지 명령이 있습니다. Visual Studio에서는 디버거 도구 모음, 디버그 메뉴, 코드 편집기의 마우스 오른쪽 버튼 클릭 메뉴 및 키보드 바로 가기를 통해 명령을 사용할 수 있습니다.

Visual Studio 창 위쪽의 디버거 도구 모음은 가장 일반적인 디버깅 명령에 빠르게 액세스할 수 있도록 합니다.

Visual Studio의 디버거 도구 모음 스크린샷

다음 표에서는 이러한 명령이 도구 모음에서 왼쪽에서 오른쪽으로 표시되는 것을 요약합니다.

행동 지름길 묘사
계속 F5 다음 중단점에 도달할 때까지 또는 프로그램이 완료될 때까지 코드를 실행합니다.
모두 중지 Ctrl+Alt+나누기 장기 실행 프로그램을 일시 중지합니다.
디버깅 중지 Shift+F5 현재 지점에서 프로그램을 중지하고 디버거종료합니다.
다시 시작 Ctrl+Shift+F5 현재 지점에서 프로그램을 중지하고 디버거처음부터 프로그램 실행을 다시 시작합니다.
다음 문장 표시 Alt+Num+\ 코드에서 실행할 다음 문으로 돌아갑니다. 이 명령은 코드에서 디버거 중지된 위치를 찾는 데 도움이 됩니다.
들어가기 F11 다음 문을 실행하고 중지합니다. 다음 문이 함수에 대한 호출인 경우 디버거는 함수에 들어가서 첫 번째 줄에서 중지됩니다.
스텝 오버 F10 함수 호출(모든 코드 실행) 및 반환 값 적용을 포함하여 다음 문을 실행합니다. 이 명령을 사용하면 디버그할 필요가 없는 함수를 쉽게 건너뛸 수 있습니다.
단계별 Shift+F11 현재 함수가 끝날 때까지 코드를 실행한 다음 호출 문으로 이동하고 일시 중지합니다. 이 명령은 현재 함수의 나머지 부분을 디버그할 필요가 없는 경우에 유용합니다.

Python 코드에서 디버거 작업을 사용하려면 다음 단계를 수행합니다.

  1. 단계별 작업을 사용하여 for 루프 문을 단계별로 실행합니다.

    단계별디버거 호출된 함수를 포함하여 현재 코드 줄을 실행하고 즉시 다시 일시 중지합니다. 단계가 끝난 후, 변수 i가 이제 LocalsAutos 창에 정의된 것을 확인하십시오.

  2. 다음 코드 줄을 넘어서 make_dot_string 함수를 호출합니다.

    이 경우 단계 건너뛰기디버거가 전체 make_dot_string 함수를 실행하고, 함수에서 반환된 후에 일시 중지하도록 합니다. 디버거 별도의 중단점이 없는 한 함수 내에서 중지되지 않습니다.

  3. 코드를 몇 번 더 단계별로 실행하고 Locals 또는 자동 창의 값이 어떻게 변경되는지 관찰합니다.

  4. 로컬 또는 자동 창에서, 변수의 열을 두 번 클릭하여 값을 편집합니다. 이 예제에서는 s 변수의 값을 'Hello, Python Application'변경합니다. 값을 작은따옴표로 묶으세요. Enter 또는 값 외부의 영역을 선택하여 변경 내용을 적용합니다.

    visual Studio에서 디버깅하는 동안 로컬 창에서 변수의 값을 변경하는 방법을 보여 주는 스크린샷

  5. make_dot_string 함수를 호출할 때까지 한 단계씩 사용하여 코드를 단계별로 실행합니다.

    함수의 경우 Step Into디버거가 함수를 호출하고 함수 코드로 들어가서 실행하도록 합니다. 디버깅 프로세스가 함수 내에 있는 경우 해당 지역 변수를 검사하고 코드를 구체적으로 단계별로 실행할 수 있습니다. 이 예제에서 단계의 작업은 make_dot_string 함수로 이동합니다.

  6. make_dot_string 함수에서 반환될 때까지 단계를 계속로 진행합니다.

    make_dot_string 함수 코드의 끝에 도달하면 다음 단계에서는 s 변수의 새 반환 값을 사용하여 *디버거for 루프로 반환합니다.

    print 문으로 다시 이동하면 print 문에서 '단계별 진입' 동작이 해당 함수로 들어가지 않습니다. 이 동작은 print 함수가 Python으로 작성되지 않았기 때문입니다. Python 런타임 내의 네이티브 코드입니다.

  7. make_dot_string 함수에 다시 부분적으로 들어갈 때까지 한 단계씩 계속 사용한 다음, 단계 종료를 사용하여 디버거for 루프로 돌아가는 것을 확인합니다.

    Step Out사용하면 디버거 함수의 나머지 부분을 실행한 다음 호출 코드에서 자동으로 일시 중지됩니다. 이 작업은 긴 함수의 일부를 단계별로 실행하고 함수 관찰을 종료하려는 경우에 유용합니다. Step Out은 나머지 코드를 순차적으로 실행하거나 호출 코드에 설정된 명시적인 중단점에 도달할 때까지 진행합니다.

  8. 계속(F5)를 사용하여 다음 중단점에 도달할 때까지 프로그램을 계속 실행합니다. for 루프에 중단점이 설정되어 있으므로 다음 반복을 중단합니다.

    Locals 창에서 s 변수의 변경 값을 관찰하여 프로그램이 계속 실행되고 있는지 확인할 수 있습니다.

중단점 조건 사용

수백 번의 반복을 반복하는 작업은 번거로울 수 있으므로 Visual Studio를 사용하면 중단점에 조건을 추가할 수 있습니다. 중단점 조건을 설정하면 디버거 조건이 충족될 때만 중단점에서 프로그램을 일시 중지합니다.

다음 단계에서는 i 변수의 값이 1600을 초과하는 경우에만 디버거 일시 중지되도록 for 루프 문에 중단점 조건을 정의하는 방법을 보여 줍니다.

  1. 중단점 조건을 설정하려면 빨간색 중단점 점을 마우스 오른쪽 단추로 클릭하고 조건 선택하거나 Alt +F9>C바로 가기 키사용합니다.

  2. 중단점 설정 팝업 대화 상자에서 다음 설정을 구성하여 조건만듭니다.

    1. 조건 유형을 로 설정하고 조건식을로 설정합니다.

    2. 일 때이 true가 되는 조건 평가를 정의합니다.

    3. 조건 값으로 i > 1600 입력합니다.

    4. 닫기를 선택합니다.

    visual Studio의 디버거에서 조건부 중단점을 설정하는 방법을 보여 주는 스크린샷

  3. F5 선택하여 디버깅 및 프로그램 실행을 계속합니다. 프로그램이 조건부 중단점에 도달하기 전에 많은 반복을 실행하는지 확인합니다.

    디버거가 조건부 중단점에 도달하면 프로그램 실행을 올바르게 일시 중지할 확인할 수 있습니다. 조건이 충족되면 지역 창에 i 변수 값이 1608표시됩니다.

  4. 프로그램을 완료할 때 실행하려면 중단점을 사용하지 않도록 설정하고 프로그램 실행을 계속할 수 있습니다.

    1. 빨간색 점을 마우스로 가리키고 사용하지 않도록 설정하거나 빨간색 점을 마우스 오른쪽 단추로 클릭하고 중단점 사용하지 않도록선택합니다.

    2. 계속 선택하거나 F5눌러 프로그램을 실행합니다.

    프로그램이 종료되면 Visual Studio에서 디버깅 세션을 중지하고 편집 모드로 돌아갑니다.

    중단점을 삭제할 수도 있습니다. 빨간색 점을 선택하거나 점을 마우스 오른쪽 단추로 클릭하고 중단점 삭제를 선택합니다. 이 작업은 정의된 조건도 삭제합니다.

일부 상황에서는, 예를 들어 Python 인터프리터 자체가 시작되지 않는 경우, 프로그램이 완료된 후 일시 중지하거나 아무 키나 눌러서 계속하시기 바랍니다 같은 메시지를 표시하지 않고 Python 출력 창이 즉시 닫힐 수 있습니다. 일시 중지 및 프롬프트를 강제로 적용하려면 디버그 탭의 실행>인터프리터 인수 필드에 -i 인수를 추가합니다. 이 인수는 코드가 실행된 후 Python 인터프리터를 대화형 모드로 전환합니다. 프로그램에서 Ctrl +Z+Enter선택하여 창을 닫을 때까지 기다립니다.

다음 단계