Konfigurace podmíněných zarážek v jazyce C#

Dokončeno

Ladicí program jazyka C# pro Visual Studio Code podporuje možnost konfigurace zarážky, která se aktivuje pouze v případě splnění podmínky. Tento typ zarážky se nazývá podmíněná zarážka. Podmíněné zarážky je možné nakonfigurovat přímo nebo úpravou existující zarážky.

Poznámka:

Visual Studio Code také podporuje podmíněný bod přerušení, který se aktivuje na základě toho, kolikrát byl bod přerušení „dosažen“.

Předpokládejme, že ladíte aplikaci, která zpracovává informace o produktu v multidimenzionálním řetězcovém poli. Pole obsahuje tisíce datových bodů. Zdá se, že problém, který řešíte, se vyskytuje u produktů, které jsou označené jako new. Kód zpracuje pole uvnitř smyčky for . Potřebujete nastavit zarážku uvnitř smyčky, ale chcete ji pozastavit pouze v případě, že produkty jsou new.

Použijte standardní bod přerušení k prozkoumání aplikace pro zpracování dat

  1. Obsah souboru Program.cs nahraďte následujícím kódem:

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

    Tento kód používá metodu pojmenovanou LoadProducts k načtení dat do products pole. Po načtení dat kód iteruje pole a volá metody pojmenované Process1 a Process2.

  2. Pokud chcete vygenerovat data pro simulované procesy, přidejte na konec souboru Program.cs následující metodu:

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

    Metoda LoadProducts vygeneruje 2000 náhodných ID produktů a přiřadí hodnotu existing, newnebo obsolete do pole popisu produktu. Existuje přibližně 1% šance, že jsou produkty označeny new.

  3. Pokud chcete simulovat zpracování dat, přidejte na konec souboru Program.cs následující metody:

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

    Metody Process1 a Process2 zobrazují zprávy o průběhu a vrací řetězec.

    Všimněte si, že metoda Process2 volá Process3, pokud je produkt new.

  4. V nabídce Soubor editoru Visual Studio Code vyberte Uložit.

  5. V horní části souboru Program.cs nastavte zarážku na následujícím řádku kódu:

    result = Process1(products, i);
    
  6. Otevřete zobrazení SPUSTIT A LADIT a pak vyberte Spustit ladění.

  7. Pomocí Step Into procházejte kód pro Process1 a Process2.

    Všimněte si aktualizací v částech PROMĚNNÉ a ZÁSOBNÍK VOLÁNÍ v zobrazení SPUSTIT A LADIT.

  8. Pokračujte pomocí Vstoupit a projděte si kód, dokud neuvidíte, že i je rovno 3.

    V části PROMĚNNÉ v zobrazení SPUSTIT A LADĚNÍ se zobrazí hodnota přiřazená i.

    Všimněte si, že Process1 a Process2 zobrazují zprávy v panelu konzole ladění. Skutečná aplikace může vyžadovat interakce uživatelů při zpracování dat. Některé interakce můžou záviset na zpracovávaných datech.

  9. Pomocí tlačítka Zastavit zastavte provádění kódu.

Nakonfigurujte podmíněnou zarážku pomocí výrazu

Standardní bod přerušení je skvělý pro snadné procházení aplikací na zpracování dat. V tomto případě vás ale zajímají new produkty a nechcete procházet analýzou jednotlivých produktů, abyste našli ty, které jsou new. Tento scénář je dobrým příkladem toho, kdy se mají použít podmíněné zarážky.

  1. Klikněte pravým tlačítkem myši na existující zarážku a pak vyberte Upravit zarážku.

  2. Zadejte následující výraz:

    products[i,1] == "new";
    
  3. Všimněte si, že po stisknutí klávesy Enter se výraz už nezobrazuje.

  4. Pokud chcete výraz zobrazit dočasně, najeďte myší na zarážku (červená tečka).

  5. Pokud chcete spustit aplikaci s nakonfigurovanou podmíněnou zarážkou, vyberte Spustit ladění.

  6. Počkejte, až se aplikace pozastaví na podmíněném bodě přerušení.

  7. Všimněte si hodnoty i zobrazené v části PROMĚNNÉ.

  8. Na nástrojové liště Ovládací prvky ladění vyberte Pokračovat.

  9. Všimněte si, že hodnota i byla aktualizována v oddílu VARIABLES.

  10. Vyberte krok do.

  11. Pokračujte ve výběru Vstoupit do dokud se zpráva nezobrazí.

  12. Všimněte si, že Process1 pracuje na novém produktu.

  13. Chvíli zvažte výhodu, kterou nabízejí podmíněné zarážky.

    V tomto scénáři simulovaného zpracování dat existuje přibližně 1% šance, že produkt je new. Pokud k ladění problému používáte standardní zarážku, museli byste si projít analýzu přibližně 100 produktů, abyste našli jeden z new produktů, které vás zajímají.

    Podmíněné zarážky vám můžou ušetřit spoustu času při ladění aplikace.

  14. Pomocí tlačítka Zastavit zastavte provádění kódu.

Gratulujeme! Úspěšně jste nakonfigurovali podmíněný breakpoint.

Rekapitulace

Tady jsou dvě důležité věci, které je potřeba si z této lekce zapamatovat:

  • K pozastavení aplikace při každém dosažení bodu přerušení použijte standardní bod přerušení.
  • Pomocí podmíněného bodu přerušení pozastavte aplikaci, když se Booleovský výraz vyhodnotí jako true.