Konfigurera villkorliga brytpunkter i C#

Fullbordad

C#-felsökningsprogrammet för Visual Studio Code stöder alternativet att konfigurera en brytpunkt som bara utlöses om ett villkor uppfylls. Den här typen av brytpunkt kallas för en villkorlig brytpunkt. Villkorliga brytpunkter kan konfigureras direkt eller genom att redigera en befintlig brytpunkt.

Anmärkning

Visual Studio Code stöder också en villkorlig brytpunkt som utlöses baserat på antalet gånger brytpunkten har "träffats".

Anta att du felsöker ett program som bearbetar produktinformation i en flerdimensionell strängmatris. Matrisen innehåller tusentals datapunkter. Problemet som du felsöker verkar uppstå för produkter som har markerats som new. Koden bearbetar matrisen i en for loop. Du behöver ange en brytpunkt inne i loopen, men du vill bara pausa när produkterna är new.

Använda en standard brytpunkt för att undersöka ett databehandlingsprogram

  1. Ersätt innehållet i Program.cs-filen med följande kod:

    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) ;
    

    Den här koden använder en metod med namnet LoadProducts för att läsa in data i matrisen products . När data har lästs in itererar koden genom matrisen och anropar metoder med namnet Process1 och Process2.

  2. Om du vill generera data för de simulerade processerna lägger du till följande metod i slutet av din Program.cs-fil:

    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;
        }
    }
    

    Metoden LoadProducts genererar 2 000 slumpmässiga produkt-ID:t och tilldelar värdet existing, neweller obsolete till ett produktbeskrivningsfält. Det finns ungefär 1% chans att produkterna är märkta new.

  3. Om du vill simulera databearbetning lägger du till följande metoder i slutet av din Program.cs-fil:

    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");
    }
    

    Metoderna Process1 och Process2 visar förloppsmeddelanden och returnerar en sträng.

    Observera att Process2 metoden anropar Process3 om produkten är new.

  4. På menyn Visual Studio Code-fil väljer du Spara.

  5. Längst upp i filen Program.cs anger du en brytpunkt på följande kodrad:

    result = Process1(products, i);
    
  6. Öppna vyn KÖR OCH FELSÖK och välj sedan Starta felsökning.

  7. Använd Step Into för att gå igenom koden för Process1 och Process2.

    Observera uppdateringarna av avsnitten VARIABLES och CALL STACK i vyn KÖR OCH FELSÖK.

  8. Fortsätt att använda Step Into för att gå igenom koden tills du ser att den i är lika med 3.

    Avsnittet VARIABLER i vyn KÖR OCH FELSÖK visar värdet som tilldelats till i.

    Observera att Process1 och Process2 visar meddelanden i PANELEN FELSÖKNINGSKONSOL. Ett verkligt program kan kräva användarinteraktioner när data bearbetas. Vissa interaktioner kan vara beroende av de data som bearbetas.

  9. Använd knappen Stoppa för att stoppa kodkörningen.

Konfigurera en villkorlig brytpunkt med ett uttryck

En standard brytpunkt är perfekt för att gå igenom ett databehandlingsprogram. Men i det här fallet är du intresserad av new produkter och du vill inte gå igenom analysen av varje produkt för att hitta de som är new. Det här scenariot är ett bra exempel på när villkorsstyrda brytpunkter ska användas.

  1. Högerklicka på din befintliga brytpunkt och välj sedan Redigera brytpunkt.

  2. Ange följande uttryck:

    products[i,1] == "new";
    
  3. Observera att uttrycket inte längre visas när du trycker på Retur.

  4. Om du vill visa uttrycket tillfälligt hovra muspekaren över brytpunkten (röd punkt).

  5. Om du vill köra programmet med den konfigurerade villkorliga brytpunkten väljer du Starta felsökning.

  6. Vänta tills programmet pausas vid den villkorliga brytpunkten.

  7. Observera värdet i för som visas under avsnittet VARIABLER.

  8. I verktygsfältet Felsökningskontroller väljer du Fortsätt

  9. Observera att värdet i för har uppdaterats i avsnittet VARIABLES.

  10. Välj Stega in.

  11. Fortsätt att välja Steg in tills meddelandet Process1 visas.

  12. Observera att Process1 rapporterar att det fungerar på en ny produkt.

  13. Ta en stund att överväga den fördel som villkorliga brytpunkter erbjuder.

    I det här simulerade databearbetningsscenariot finns det ungefär 1% chans att en produkt är new. Om du använder en standard brytpunkt för att felsöka problemet måste du gå igenom analysen av cirka 100 produkter för att hitta en av de new produkter som du är intresserad av.

    Villkorsstyrda brytpunkter kan spara mycket tid när du felsöker ett program.

  14. Använd knappen Stoppa för att stoppa kodkörningen.

Grattis! Du har lyckats konfigurera en villkorlig brytpunkt.

Sammanfattning

Här är två viktiga saker att komma ihåg från den här lektionen:

  • Använd en standard brytpunkt för att pausa ett program varje gång en brytpunkt påträffas.
  • Använd en villkorlig brytpunkt för att pausa ett program när ett booleskt uttryck utvärderas till true.