Exerciții - Setarea punctelor de întrerupere

Finalizat

Punctele de întrerupere sunt utilizate în timpul executării procesului de depanare. Acest lucru vă permite să urmăriți variabile și să examinați secvența în care se execută codul. Punctele de întrerupere sunt o modalitate foarte bună de a începe procesul de depanare.

Setarea unui punct de întrerupere

Anterior în acest modul, ați efectuat un exercițiu în care ați rulat o aplicație în depanator. Aplicația a afișat "mesaje de salut" în panoul CONSOLĂ DEBUG. La sfârșitul exercițiului, ați observat că codul repetă salutul lui Andrew într-un mod neașteptat.

În acest exercițiu, veți utiliza un punct de întrerupere pentru a vă ajuta să identificați problema.

  1. Asigurați-vă că fișierul Program.cs conține următorul exemplu de cod:

    /* 
    This code uses a names array and corresponding methods to display
    greeting messages
    */
    
    string[] names = new string[] { "Sophia", "Andrew", "AllGreetings" };
    
    string messageText = "";
    
    foreach (string name in names)
    {
        if (name == "Sophia")
            messageText = SophiaMessage();
        else if (name == "Andrew")
            messageText = AndrewMessage();
        else if (name == "AllGreetings")
            messageText = SophiaMessage();
            messageText = messageText + "\n\r" + AndrewMessage();
    
        Console.WriteLine(messageText + "\n\r");
    }
    
    bool pauseCode = true;
    while (pauseCode == true);
    
    static string SophiaMessage()
    {
        return "Hello, my name is Sophia.";
    }
    
    static string AndrewMessage()
    {
        return "Hi, my name is Andrew. Good to meet you.";
    }
    
  2. Utilizați instrumentele de depanare a codului Visual Studio pentru a seta un punct de întrerupere pe prima linie de cod din foreach buclă.

    Captură de ecran afișând un punct de întrerupere în cod.

    Sfat

    O opțiune simplă pentru comutarea unui punct de întrerupere este să selectați (faceți clic stânga) pe zona din partea stângă a numărului liniei. Punctele de întrerupere pot fi setate și utilizând Run meniul și comenzile rapide de la tastatură.

  3. În meniul Executare , selectați Pornire depanare.

  4. Observați că executarea codului se întrerupe la punctul de întrerupere și că linia de cod curentă este evidențiată în Editor.

    Captură de ecran afișând executarea codului în pauză într-un punct de întrerupere.

  5. Pe bara de instrumente Depanare controale , selectați Depanați.

    Puteți trece cu indicatorul mouse-ului peste butoanele de pe bara de instrumente Controale depanare pentru a afișa etichetele butonului.

  6. Observați că executarea codului trece la următoarea linie de cod și pune în pauză:

    messageText = SophiaMessage();
    

    Această linie de cod atribuie valoarea returnată a metodei variabilei SophiaMessage șir messageText.

  7. Faceți un moment pentru a lua în considerare motivul pentru care selectarea Pas cu pas a produs acest rezultat.

    • Butonul Pas în este utilizat pentru a trece la următoarea instrucțiune executabilă.
    • Deoarece primul element din names matrice este Sophia și if instrucțiunea verifică numele Sophia, expresia se evaluează la true și executarea codului se mută în blocul de cod al instrucțiunii if .
  8. Pe bara de instrumente Depanare controale , selectați Depanați.

  9. Observați că executarea codului trece la SophiaMessage metodă și pauze.

    Butonul Pas în are avansat la următoarea linie de cod executabil. Următoarea linie de cod executabil nu este numărul următor al liniei din fișier, este următoarea instrucțiune din calea de execuție. În acest caz, următoarea instrucțiune executabilă este punctul de intrare al metodei SophiaMessage .

  10. Pe bara de instrumente Depanare controale , selectați Ieșire.

  11. Observați că executarea codului revine la linia de cod care se numește SophiaMessage metodă și întrerupe.

  12. Luați un moment pentru a lua în considerare motivul pentru care selectarea Ieșire a produs acest rezultat.

    Atunci când vă aflați într-o metodă, butonul Ieșire finalizează liniile rămase ale metodei curente, apoi revine la contextul de execuție care a invocat metoda.

  13. Pe bara de instrumente Depanare controale , selectați Depanați.

  14. Observați că executarea codului trece la următoarea linie de cod și pune în pauză:

    messageText = messageText + "\n\r" + AndrewMessage();
    
  15. Aveți nevoie de câteva momente pentru a lua în considerare motivul pentru care executarea complexă a acestei linii de cod.

    Deși indentarea codului implică faptul că această linie de cod face parte din blocul else if de cod pentru instrucțiune, aceasta nu este. Utilizarea acoladelor {} pentru a defini blocurile de cod pentru această if - else if structură ar fi ajutat la evitarea acestei erori. Pe măsură ce codul este scris, mesajul lui Andrew va fi adăugat la messageText fiecare iterare buclă.

Verificarea actualizărilor de cod

După ce ați izolat o problemă în cod, ar trebui să actualizați codul, apoi să verificați dacă problema a fost remediată.

  1. Pe bara de instrumente Controale depanare , selectați Oprire.

  2. Luați un minut pentru a remedia logica codului.

    Aveți câteva opțiuni pentru remedierea problemei identificate în cod. De exemplu:

    • Puteți să păstrați liniile de cod existente și să adăugați acolade {} la if structura fiecărui bloc de cod.

    • Puteți îmbina cele două linii de cod care urmează instrucțiunea finală else if , formând o instrucțiune unică după cum urmează:

      else if (name == "AllGreetings")
          messageText = SophiaMessage() + "\n\r" + AndrewMessage();
      

    Oricum, codul actualizat trebuie să includă apelul în AndrewMessage blocul de cod atunci când name == "AllGreetings".

  3. În meniul fișier, selectați Salvare.

  4. Utilizați instrumentele de depanare a interfeței de utilizator pentru a goli punctul de întrerupere pe care l-ați setat anterior.

  5. În meniul Executare , selectați Pornire depanare.

  6. Verificați dacă acum codul dvs. generează rezultatele așteptate.

    Hello, my name is Sophia.
    
    Hi, my name is Andrew. Good to meet you.
    
    Hello, my name is Sophia.
    Hi, my name is Andrew. Good to meet you.
    
  7. Pe bara de instrumente Controale depanare , selectați Oprire.

Felicitări! Ați utilizat cu succes depanatorul Visual Studio Code pentru a vă ajuta să izolați și să remediați o problemă logică.

Recapitula

Iată câteva lucruri importante de reținut din această unitate:

  • Utilizați puncte de întrerupere pentru a pune în pauză executarea codului în timpul unei sesiuni de depanare.
  • Utilizați Pasul În din bara de instrumente Controale depanare pentru a observa următoarea linie de cod executabil.
  • Utilizați Ieșirea din bara de instrumente Controale depanare pentru a avansa prin metoda curentă și a reveni la linia de cod care a denumit metoda.