Ehdollisen keskeytyskohdan määrittäminen C:ssä#

Valmis

Visual Studio Coden C#-virheenkorjaustoiminto tukee valintaa määrittääkseen keskeytyskohdan, joka käynnistyy vain, jos ehto täyttyy. Tämäntyyppistä keskeytyskohtaa kutsutaan ehdolliseksi keskeytyspisteeksi. Ehdolliset keskeytyskohdat voidaan määrittää suoraan tai muokkaamalla olemassa olevaa keskeytyskohtaa.

Huomautus

Visual Studio Code tukee myös ehdollista keskeytyskohtaa, joka käynnistyy sen mukaan, kuinka monta kertaa keskeytyspiste on osunut.

Oletetaan, että olet virheenkorjaamassa sovellusta, joka käsittelee tuotetietoja moniulotteisessa merkkijonomatriisissa. -matriisi sisältää tuhansia arvopisteitä. Virheenkorjauksessa esiintyy ongelma tuotteissa, joissa on merkintä new. Koodi käsittelee -matriisin silmukan for sisällä. Sinun on asetettava keskeytyskohta silmukan sisällä, mutta haluat keskeyttää vain, kun tuotteet ovat new.

Tietojenkäsittelysovelluksen tutkiminen vakion keskeytyskohdan avulla

  1. Korvaa Program.cs-tiedoston sisältö seuraavalla koodilla:

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

    Tämä koodi käyttää -menetelmää LoadProducts tietojen products lataamiseen matriisiin. Kun tiedot on ladattu, koodi iteroi -matriisin kautta ja kutsuu -menetelmiä nimeltä Process1 ja Process2.

  2. Jos haluat luoda tietoja simuloiduille prosesseille, lisää seuraava menetelmä Program.cs-tiedoston loppuun:

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

    -LoadProductsmenetelmä luo 2 000 satunnaista tuotetunnusta ja määrittää -, existingnew- tai obsolete tuotteen kuvaus -kentän arvon. On noin 1% mahdollisuus, että tuotteet on merkitty new.

  3. Jos haluat simuloida tietojen käsittelyä, lisää seuraavat menetelmät Program.cs-tiedostosi loppuun:

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

    -menetelmät Process1Process2 näyttävät edistymisviestit ja palauttavat merkkijonon.

    Huomaa, että - Process2 menetelmä kutsuu Process3 , jos tuote on new.

  4. Valitse Visual Studio Code Tiedoston -valikosta Tallenna.

  5. Määritä Program.cs tiedoston yläosan lähellä oleva keskeytyskohta seuraavalle koodiriville:

    result = Process1(products, i);
    
  6. Avaa SUORITA- JA VIRHEENKORJAUS-näkymä ja valitse sitten Aloita virheenkorjaus.

  7. Käytä Vaihe sisään -vaihetta, niin voit käydä koodin ja -kohteen läpi Process1Process2.

    Huomaa SUORITA JA VIRHEENKORJAUS -näkymän VARIABLES- ja CALL STACK -osien päivitykset.

  8. Käy koodi läpi vaiheeseen -kohdan avulla, kunnes näet, että i arvo on 3.

    SUORITA JA VIRHEENKORJAUS -näkymän MUUTTUJAT-osiossa näytetään kohteelle imääritetty arvo.

    Huomaa tämä Process1 ja Process2 näytä viestit DEBUG CONSOLE -paneelissa. Todellinen sovellus saattaa edellyttää käyttäjän toimia, kun tietoja käsitellään. Jotkin vuorovaikutukset voivat olla riippuvaisia käsitellyistä tiedoista.

  9. Lopeta koodin suorittaminen Stop-painikkeella.

Ehdollisen keskeytyskohdan määrittäminen lausekkeen avulla

Tavallinen keskeytyskohta sopii erinomaisesti tietojenkäsittelysovelluksen läpi kulkemiseen. Tässä tapauksessa olet kuitenkin kiinnostunut new tuotteista, etkä halua käydä läpi kunkin tuotteen analyysiä löytääksesi tuotteet, jotka ovat new. Tämä skenaario on hyvä esimerkki siitä, milloin ehdollisia keskeytyskohtia tulee käyttää.

  1. Napsauta hiiren kakkospainikkeella aiemmin luotua keskeytyskohtaa ja valitse sitten Muokkaa keskeytyspistettä.

  2. Kirjoita seuraava lauseke:

    products[i,1] == "new";
    
  3. Huomaa, että lauseke ei enää näy, kun painat Enter-näppäintä.

  4. Saat lausekkeen tilapäisesti näkyviin viemällä hiiren osoittimen keskeytyskohdan (punaisen pisteen) päälle.

  5. Jos haluat suorittaa sovelluksesi, kun ehdollinen keskeytyskohta on määritetty, valitse Aloita virheenkorjaus.

  6. Odota, että sovellus pysähtyy ehdollisen keskeytyskohdan kohdalla.

  7. Huomaa -arvo i , joka näytetään MUUTTUJAT-osassa.

  8. Valitse Virheenkorjaus-ohjausobjektien työkalurivillä Jatka

  9. Huomaa, että -arvoa i on päivitetty MUUTTUJAT-osassa.

  10. Valitse Vaihe sisään.

  11. Jatka valitsemalla Vaihe sisään , Process1 kunnes sanoma tulee näkyviin.

  12. Huomaa, että Process1 se ilmoittaa muokkaavansa uutta tuotetta.

  13. Mieti nyt, mitä etua ehdolliset keskeytyspisteet tarjoavat.

    Tässä simuloidussa tietojen käsittelyskenaariossa on noin 1% mahdollisuus, että tuote on new. Jos käytät vakiorajapintaa ongelman virheenkorjaukseen, sinun tulee käydä läpi noin 100 tuotteen analyysi löytääksesi jonkin sinua kiinnostavan new tuotteen.

    Ehdolliset keskeytyskohdat voivat säästää paljon aikaa, kun suoritat sovelluksen virheenkorjausta.

  14. Lopeta koodin suorittaminen Stop-painikkeella.

Onnittelen! Ehdollisen keskeytyskohdan määrittäminen onnistui.

Kertaus

Tässä on kaksi tärkeää asiaa, jotka tulee muistaa tästä osiosta:

  • Normaalin keskeytyskohdan avulla voit keskeyttää sovelluksen aina, kun kohtaat keskeytyskohdan.
  • Keskeytä sovellus ehdollisen keskeytyskohdan avulla, kun totuusarvolausekkeen arvo on true.