Konfigurer betingede pausepunkter i C#

Fuldført

C#-fejlfindingsprogrammet til Visual Studio Code understøtter muligheden for at konfigurere et pausepunkt, der kun udløses, hvis en betingelse er opfyldt. Denne type pausepunkt kaldes et betinget pausepunkt. Betingede pausepunkter kan konfigureres direkte eller ved at redigere et eksisterende pausepunkt.

Seddel

Visual Studio Code understøtter også et betinget pausepunkt, der udløses på baggrund af det antal gange, pausepunktet er blevet "ramt".

Lad os antage, at du foretager fejlfinding af et program, der behandler produktoplysninger i en flerdimensionel strengmatrix. Matrixen indeholder tusindvis af datapunkter. Det problem, du foretager fejlfinding af, synes at opstå for produkter, der er markeret som new. Din kode behandler matrixen i en for løkke. Du skal angive et pausepunkt i løkken, men du vil kun afbryde midlertidigt, når produkter er new.

Brug et standard pausepunkt til at undersøge et databehandlingsprogram

  1. Erstat indholdet af Program.cs-filen med følgende kode:

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

    Denne kode bruger en metode med navnet LoadProducts til at indlæse data i matrixen products . Når dataene er indlæst, gentages koden via matrixen og kalder metoder med navnet Process1 og Process2.

  2. Hvis du vil generere data for de simulerede processer, skal du føje følgende metode til slutningen af 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 genererer 2000 tilfældige produkt-id'er og tildeler værdien existing, neweller obsolete til et produktbeskrivelsesfelt. Der er omkring en 1% chance for, at produkterne er markeret new.

  3. Hvis du vil simulere databehandling, skal du føje følgende metoder til slutningen af 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");
    }
    

    Metoderne Process1 og Process2 viser statusmeddelelser og returnerer en streng.

    Bemærk, at metoden Process2 kalder Process3 , hvis produktet er new.

  4. Vælg Gemi menuen Visual Studio Code File .

  5. Angiv et pausepunkt på følgende kodelinje nær toppen af filen Program.cs:

    result = Process1(products, i);
    
  6. Åbn visningen KØR OG FEJLFINDING, og vælg derefter Start fejlfinding.

  7. Brug Step Into til at gennemgå koden for Process1 og Process2.

    Bemærk opdateringerne til afsnittene VARIABLES og CALL STACK i visningen RUN AND DEBUG.

  8. Fortsæt med at bruge Step Into til at gennemgå koden, indtil du kan se, at den i er lig med 3.

    I afsnittet VARIABLES i visningen RUN AND DEBUG vises den værdi, der er tildelt til i.

    Bemærk, at og Process1Process2 få vist meddelelser i panelet DEBUG CONSOLE. Et reelt program kan kræve brugerinteraktioner, når data behandles. Nogle interaktioner kan være afhængige af de data, der behandles.

  9. Brug knappen Stop til at stoppe udførelsen af kode.

Konfigurer et betinget pausepunkt ved hjælp af et udtryk

Et standard pausepunkt er velegnet til at gennemgå et databehandlingsprogram. Men i dette tilfælde er du interesseret i new produkter, og du ønsker ikke at gennemgå analysen af hvert produkt for at finde dem, der er new. Dette scenarie er et godt eksempel på, hvornår betingede pausepunkter skal bruges.

  1. Højreklik på dit eksisterende pausepunkt, og vælg derefter Rediger pausepunkt.

  2. Angiv følgende udtryk:

    products[i,1] == "new";
    
  3. Bemærk, at udtrykket ikke længere vises, når du har trykket på Enter.

  4. Hvis du vil have vist udtrykket midlertidigt, skal du holde musemarkøren over pausepunktet (rød prik).

  5. Hvis du vil køre dit program med det betingede pausepunkt konfigureret, skal du vælge Start fejlfinding.

  6. Vent på, at programmet stopper midlertidigt ved det betingede pausepunkt.

  7. Bemærk værdien af i , der vises under afsnittet VARIABLER.

  8. På værktøjslinjen Fejlfindingskontrolelementer skal du vælge Fortsæt

  9. Bemærk, at værdien af i er blevet opdateret afsnittet VARIABLES.

  10. Vælg Trin ind.

  11. Fortsæt med at vælge Trin ind , Process1 indtil meddelelsen vises.

  12. Bemærk, at Process1 rapporterer, at det arbejder på et nyt produkt.

  13. Brug et øjeblik på at overveje den fordel, som betingede pausepunkter tilbyder.

    I dette simulerede databehandlingsscenarie er der ca. 1% chance for, at et produkt er new. Hvis du bruger et standard pausepunkt til at foretage fejlfinding af problemet, skal du gennemgå analysen af ca. 100 produkter for at finde et af de new produkter, du er interesseret i.

    Betingede pausepunkter kan spare dig for meget tid, når du foretager fejlfinding af et program.

  14. Brug knappen Stop til at stoppe udførelsen af kode.

Tillykke! Du har konfigureret et betinget pausepunkt.

Resumé

Her er to vigtige ting, du skal huske fra dette undermodul:

  • Brug et standardpausepunkt til at afbryde et program midlertidigt, hver gang der opstår et pausepunkt.
  • Brug et betinget pausepunkt til at afbryde et program midlertidigt, når et boolesk udtryk evalueres til true.