C#에서 조건부 중단점 구성

완료됨

Visual Studio Code용 C# 디버거는 조건이 충족되는 경우에만 트리거되는 중단점을 구성하는 옵션을 지원합니다. 이러한 유형의 중단점을 조건부 중단점이라고 합니다. 조건부 중단점은 직접 구성하거나 기존 중단점을 편집하여 구성할 수 있습니다.

비고

Visual Studio Code는 중단점이 "적중"된 횟수에 따라 트리거되는 조건부 중단점도 지원합니다.

다차원 문자열 배열에서 제품 정보를 처리하는 애플리케이션을 디버깅한다고 가정합니다. 배열에는 수천 가지 데이터 요소가 포함됩니다. 당신이 디버깅하고 있는 문제는 new으로 표시된 제품에서 발생하는 것 같습니다. 코드는 루프 내에서 배열을 처리합니다 for . 루프 내에서 중단점을 설정해야 하지만 제품이 있는 경우에만 일시 중지하려고 합니다 new.

표준 중단점을 사용하여 데이터 처리 애플리케이션 검사

  1. Program.cs 파일의 내용을 다음 코드로 바꿉니다.

    int productCount = 2000;
    string[,] products = new string[productCount, 2];
    
    LoadProducts(products, productCount);
    
    for (int i = 0; i < productCount; i++)
    {
        string result;
        result = Process1(products, i);
    
        if (result != "obsolete")
        {
            result = Process2(products, i);
        }
    }
    
    bool pauseCode = true;
    while (pauseCode == true) ;
    

    이 코드는 명명된 LoadProducts 메서드를 사용하여 배열에 데이터를 로드합니다 products . 데이터가 로드된 후, 코드는 배열을 순회하고 Process1Process2로 명명된 메서드를 호출합니다.

  2. 시뮬레이션된 프로세스에 대한 데이터를 생성하려면 Program.cs 파일의 끝에 다음 메서드를 추가합니다.

    static void LoadProducts(string[,] products, int productCount)
    {
        Random rand = new Random();
    
        for (int i = 0; i < productCount; i++)
        {
            int num1 = rand.Next(1, 10000) + 10000;
            int num2 = rand.Next(1, 101);
    
            string prodID = num1.ToString();
    
            if (num2 < 91)
            {
                products[i, 1] = "existing";
            }
            else if (num2 == 91)
            {
                products[i, 1] = "new";
                prodID = prodID + "-n";
            }
            else
            {
                products[i, 1] = "obsolete";
                prodID = prodID + "-0";
            }
    
            products[i, 0] = prodID;
        }
    }
    

    이 메서드는 LoadProducts 2000개의 임의 existing제품 ID를 생성하고 , new또는 obsolete 제품 설명 필드에 값을 할당합니다. 제품이 표시 new될 확률은 약 1% 있습니다.

  3. 데이터 처리를 시뮬레이션하려면 Program.cs 파일의 끝에 다음 메서드를 추가합니다.

    static string Process1(string[,] products, int item)
    {
        Console.WriteLine($"Process1 message - working on {products[item, 1]} product");
    
        return products[item, 1];
    }
    
    static string Process2(string[,] products, int item)
    {
        Console.WriteLine($"Process2 message - working on product ID #: {products[item, 0]}");
        if (products[item, 1] == "new")
            Process3(products, item);
    
        return "continue";
    }
    
    static void Process3(string[,] products, int item)
    {
        Console.WriteLine($"Process3 message - processing product information for 'new' product");
    }
    

    Process1 메서드는 Process2 진행률 메시지를 표시하고 문자열을 반환합니다.

    제품이 new인 경우 메서드 Process2Process3를 호출합니다.

  4. Visual Studio Code 파일 메뉴에서 저장을 선택합니다.

  5. Program.cs 파일의 위쪽에서 다음 코드 줄에 중단점을 설정합니다.

    result = Process1(products, i);
    
  6. 실행 및 디버그 보기를 열고 디버깅 시작을 선택합니다.

  7. Step Into를 사용하여 Process1Process2 코드를 단계별로 실행합니다.

    실행 및 디버그 보기의 VARIABLES 및 CALL STACK 섹션에 대한 업데이트를 확인합니다.

  8. 3과 같을 때까지 Step Into를 계속 사용하여 코드를 탐색한 후 i을 확인합니다.

    실행 및 디버그 보기의 VARIABLES 섹션에는 할당된 i값이 표시됩니다.

    "참고로 Process1Process2는 DEBUG CONSOLE 패널에 메시지를 표시합니다." 실제 애플리케이션은 데이터가 처리될 때 사용자 상호 작용이 필요할 수 있습니다. 일부 상호 작용은 처리되는 데이터에 따라 달라질 수 있습니다.

  9. 중지 단추를 사용하여 코드 실행을 중지합니다.

식을 사용하여 조건부 중단점 구성

표준 중단점은 데이터 처리 애플리케이션을 탐색하는 데 적합합니다. 그러나 이 경우에는 new 제품에 관심이 있으며, 특정 new 제품을 찾기 위해 모든 제품을 하나씩 분석하고 싶지는 않습니다. 이 시나리오는 조건부 중단점을 사용해야 하는 경우에 대한 좋은 예입니다.

  1. 기존 중단점을 마우스 오른쪽 단추로 클릭한 다음 중단점 편집을 선택합니다.

  2. 다음 식을 입력합니다.

    products[i,1] == "new";
    
  3. Enter 키를 누르면 공식이 더 이상 표시되지 않는 것을 확인하십시오.

  4. 식을 일시적으로 표시하려면 중단점 위에 마우스 포인터를 놓습니다(빨간색 점).

  5. 조건부 중단점이 구성된 애플리케이션을 실행하려면 디버깅 시작을 선택합니다.

  6. 애플리케이션이 조건부 중단점에서 일시 중지되기를 기다립니다.

  7. VARIABLES 섹션 아래에 표시된 i의 값을 주의하세요.

  8. 디버그 컨트롤 도구 모음에서 계속을 선택합니다.

  9. i이 VARIABLES 섹션에서 업데이트되었습니다.

  10. 한 단계씩 코드 실행을 선택합니다.

  11. Step Into를 메시지가 표시될 때까지 계속 선택합니다.

  12. Process1 제품 작업 중임을 보고합니다.

  13. 잠시 시간을 내어 조건부 중단점이 제공하는 이점을 고려해 보세요.

    이 시뮬레이션된 데이터 처리 시나리오에서는 제품이 new될 확률이 약 1% 있습니다. 표준 중단점을 사용하여 문제를 디버그하는 경우 관심 있는 제품 중 new 하나를 찾으려면 약 100개의 제품을 분석해야 합니다.

    조건부 중단점은 애플리케이션을 디버깅할 때 많은 시간을 절약할 수 있습니다.

  14. 중지 단추를 사용하여 코드 실행을 중지합니다.

축하합니다! 조건부 중단점을 구성했습니다.

요약

이 단원에서 기억해야 할 두 가지 중요한 사항은 다음과 같습니다.

  • 표준 중단점을 사용하여 중단점이 발생할 때마다 애플리케이션을 일시 중지합니다.
  • 조건부 중단점을 사용하여 부울 식이 true로 평가될 때 애플리케이션을 일시 중지합니다.