다음을 통해 공유


Visual Studio에서 GitHub Copilot을 사용하여 앱 디버그

이 문서에서 GitHub Copilot를 사용하여 보다 효율적으로 디버그하는 방법을 알 수 있습니다. Copilot는 코드 작동 방식에 대한 심층 분석 및 설명과 함께 코드 수정을 제공합니다. 버그 수정에 대한 제안이 도움 되며, 예외 사항을 설명합니다. Copilot은 호출 스택, 프레임, 변수 이름 및 값을 이해합니다. 따라서 디버거 인식 AI와 상호 작용하여 코드와 관련된 자세한 질문을 할 수 있으며, 일반적인 문제를 디버깅할 수 있습니다.

또한 Copilot는 다음을 포함한 몇 가지 대상 시나리오에 대해 보다 정확한 도움말을 제공합니다.

  • 예외
  • 변수
  • 교착 상태
  • CPU 사용량에 대한 자동 인사이트

이러한 시나리오에서 디버깅 중 AI 지원을 받으려면 Ask Copilot Copilot에게 질문하기 버튼의 스크린샷. 버튼을 찾으세요. 이러한 시나리오에서 Copilot은 질문의 컨텍스트를 이미 알고 있습니다. 예를 들어 현재 호출 스택, 요청하는 코드 줄 및 예외 이름(발생한 경우)을 알고 있으므로 채팅에서 컨텍스트를 직접 제공할 필요가 없습니다. 또한 Copilot에서는 조건부 중단점 및 추적점 사용에 대한 제안을 제공합니다.

Visual Studio의 GitHub Copilot 완성에 대한 자세한 내용은 Visual Studio용 GitHub Copilot 완성 정보를 참조하세요.

필수 조건

시작하려면 다음 사항이 필요합니다.

앱 디버그를 위한 AI 지원 받기

다음의 간단한 예제에서는 인라인 채팅 보기를 사용하여 AI 지원을 받는 방법을 알 수 있습니다.

참고

GitHub Copilot 채팅 보기를 > 선택하여 별도의 채팅 창을 사용한 도움말을 볼 수도 있습니다. 자세한 내용은 Visual Studio용 GitHub Copilot 채팅 확장이란?을 참조하세요.

디버깅 세션 시작

  1. Visual Studio에서 새 C# 콘솔 애플리케이션을 생성합니다.

    시작 창에서 새 프로젝트 만들기를 선택합니다. 검색 상자에 console 입력 후 C#을 언어로 선택한 다음 .NET Core용 콘솔 앱을 선택합니다. 다음을 선택합니다. ConsoleApp_Copilot과 같은 프로젝트 이름을 입력하고 다음을 선택합니다.

    권장되는 대상 프레임워크 또는 .NET 8을 선택한 다음 만들기를 선택합니다.

    .NET용 콘솔 앱 프로젝트 템플릿이 표시되지 않는 경우 도구,>도구 및 기능 가져오기로 이동하면 Visual Studio 설치 관리자를 열 수 있습니다. .NET 데스크톱 개발 워크로드를 선택한 다음, 수정을 선택합니다.

    Visual Studio는 오른쪽 창에 솔루션 Explorer에 나타나는 콘솔 프로젝트를 생성합니다.

  2. Program.cs 코드를 다음 코드로 바꿉니다.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
        public static void Main(string[] args)
        {
            int value = Int32.Parse(args[0]);
            List<String> names = null;
            if (value > 0)
                names = new List<String>();
    
            names.Add("Major Major Major");
        }
    }
    
  3. 다음 문장을 마우스 오른쪽 단추로 클릭한 다음 Breakpoint>Insert Breakpoint를 선택합니다.

    int value = Int32.Parse(args[0]);
    
  4. F5 키를 누르거나 디버그 메뉴에서 디버깅 시작을 선택합니다.

    앱이 중단점에서 일시 중지합니다. 자동 창에 인수 변수의 string[0]값이 표시됩니다.

    자동 창 스크린샷

  5. 코드를 마우스 오른쪽 단추로 클릭하고 Copilot에게 문의를 선택하여 인라인 채팅 보기를 엽니다.

    또는 자동 또는 로컬 창, 또는 데이터 팁에서 변수를 마우스 오른쪽 버튼으로 클릭하고 Copilot에 물어보기를 선택할 수 있습니다. 이렇게 하면 Copilot에게 변수 이름과 컨텍스트가 제공되므로 채팅에서 직접 컨텍스트를 제공할 필요가 없습니다.

  6. 인라인 채팅 보기에 다음 질문을 입력하십시오.

    Why does the args variable have a value of string[0]?
    

    인라인 Copilot 채팅 스크린샷

    Enter 키를 누르면, Copilot가 코드에 대한 해석을 바탕으로 답변을 제공합니다. (다음 표시된 것과 다른 답변을 받을 수 있습니다.)

    Copilot 대답한 질문 스크린샷

    Copilot에 코드에 대한 제안 수정 사항이 있는 경우 코드를 표시합니다. 그렇지 않은 경우 코드 제안을 Copilot에 문의할 수 있습니다.

    인라인 채팅에서 ‘#’ 기호를 사용하고 드롭다운 목록에서 선택하여 질문에 참조하는 동안 특정 정보를 Copilot에 전달합니다. 예를 들어 코드의 일부를 선택한 다음 #을 입력하면 # 드롭다운 목록에서 해당 선택 영역을 선택할 수 있습니다. ‘#’ 기호를 사용하여 드롭다운 목록에 표시되는 IDE 기능(예: Locals 창)을 참조할 수도 있습니다.

  7. 해당 예제에서는 Copilot 답변의 끝까지 스크롤하고 인라인 채팅 창의 끝에 있는 '인수가 프로그램에 전달되지 않으면 어떻게 처리할 수 있나요?'라는 후속 질문을 선택합니다.

    Copilot 후속 질문 스크린샷

    Copilot 코드에 대한 제안된 수정 사항을 보여 줍니다.

    Copilot이 제안한 수정 사항 스크린샷

    코드 수정을 적용하려면 수락을 선택합니다.

  8. 다음 섹션에서 Copilot의 다른 기능을 계속 학습할 수 있도록 취소를 선택합니다.

예외에 대한 AI 지원 받기

다음 간단한 예제에서는 예외가 발생할 때 AI 지원을 받는 방법과 AI 제안 수정 사항에 따라 코드를 빠르게 업데이트하는 방법을 볼 수 있습니다.

디버깅 세션 시작

  • 동일한 샘플 앱을 사용하여 디버거에서 일시 중지된 상태에서 F11 또는 디버그>단계 실행 키를 눌러 현재 문을 실행합니다.

    IndexOutOfRangeException 예외 사항이 나타나고 앱이 일시 중지됩니다.

    예외 사항에 대한 AI 지원을 받으려면 다음 섹션으로 계속 진행합니다.

AI 지원 요청

  1. 예외에서 애플리케이션이 일시 중지된 상태에서 Copilot에게 문의 버튼을 선택합니다.

    예외의 Copilot에게 질문하기 단추 스크린샷

    아직 열리지 않은 경우 Copilot 채팅 창이 나타나고 오류 및 발생한 이유에 대한 평가를 제공합니다. 이 예제에서 Copilot은 제안된 코드 수정, 코드 복사 단추 및 코드 수정에 대한 미리 보기 버튼을 식별합니다.

    예외 사항에 대한 질문이 있는 경우 Copilot에게 문의 텍스트 상자에 질문합니다.

  2. 미리 보기 버튼을 선택합니다.

    Copilot 채팅 창의 미리 보기 단추 스크린샷

    Visual Studio는 제안된 수정 사항이 포함된 코드 미리 보기를 표시합니다.

  3. 제안된 수정 사항을 검토하고 수락을 선택하여 코드 제안을 적용합니다.

    Visual Studio의 코드 미리 보기 스크린샷

  4. 디버거를 다시 시작합니다.

    이번에는 예외 사항이 발생하지 않습니다. 수정되었습니다!

조건부 중단점 및 추적점에 대한 AI 지원 받기

Copilot에서는 코드에 특정한 조건부 중단점추적점에 대한 제안을 제공합니다.

이 예제에서는 조건부 중단점에 대한 AI 제안을 보여 줍니다. 추적점의 경우 AI 지원이 동일한 방식으로 작동합니다.

  1. 현재 중단점을 클릭하거나 마우스 오른쪽 단추를 클릭하여 중단점 삭제를 선택하여 현재 중단점을 제거합니다.

  2. 다음 코드 줄을 바꿉니다.

    names.Add("Major Major Major");
    

    다음의 코드로 바꿉니다.

    // names.Add("Major Major Major");
    foreach (var item in args)
    {
       names.Add("Name: " + item);
    }
    
  3. names.Add("Name: " + item) 문 왼쪽에서 제본용 여백을 마우스 오른쪽 단추로 클릭하고 조건부 중단점 삽입을 선택합니다.

  4. 식 필드를 선택하면 Copilot가 제안 작업을 시작합니다.

    조건부 중단점 제안에 대해 작업하는 Copilot의 스크린샷.

  5. 제안이 표시되면 하나(예: item == "John")를 선택합니다. 제안을 편집하여 이름이 Fred이(가) 되도록 합니다.

    조건부 중단점에 대한 Copilot 제안의 스크린샷.

  6. 조건식을 테스트하려면:

    1. 솔루션 탐색기에서 ConsoleApp_Copilot 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    2. 디버그>일반>디버그 시작 프로필 UI 열기를 선택합니다.

    3. 명령줄 인수 필드에서 별도의 세 줄에 5 Fred Joe을(를) 입력합니다.

      프로젝트에 대한 명령줄 인수를 입력하는 스크린샷.

    4. 디버거를 다시 시작합니다.

    디버거가 중단점에서 일시 중지되면 item의 값을 확인하고 현재 값이 Fred인지 확인합니다.

IEnumerable 테이블 형식 시각화 도우미에서 AI 지원 받기

IEnumerable 테이블 형식 시각화 도우미에 대한 AI 지원은 시각화 도우미 식 수정을 참조하세요.

자동 인사이트에 대한 AI 지원 받기

Copilot은 대화형 디버깅 지원 외에도 CPU 사용량 자동 인사이트에 자세한 정보를 제공합니다. 특정 성능 인사이트 집합과 관련된 정보 및 인사이트를 제공합니다. Copilot을 사용하면 코드에서 식별된 핫 경로의 함수에 대해 질문하여 보다 효과적이고 비용 효율적인 코드를 생성하는 데 도움이 됩니다.

특정 성능 인사이트가 식별되지 않은 경우에도 Copilot에 물어보기 버튼이 나타납니다. Copilot에 물어보기를 선택하여 Copilot에서 학습하고 질문을 시작합니다.

CPU 사용량과 함께 Copilot을 사용하는 애니메이션.