Exerciții - Setarea punctelor de întrerupere
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.
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."; }Utilizați instrumentele de depanare a codului Visual Studio pentru a seta un punct de întrerupere pe prima linie de cod din
foreachbuclă.
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
Runmeniul și comenzile rapide de la tastatură.În meniul Executare , selectați Pornire depanare.
Observați că executarea codului se întrerupe la punctul de întrerupere și că linia de cod curentă este evidențiată în Editor.
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.
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șirmessageText.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
namesmatrice esteSophiașiifinstrucțiunea verifică numeleSophia, expresia se evaluează latrueși executarea codului se mută în blocul de cod al instrucțiuniiif.
Pe bara de instrumente Depanare controale , selectați Depanați.
Observați că executarea codului trece la
SophiaMessagemetodă ș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.Pe bara de instrumente Depanare controale , selectați Ieșire.
Observați că executarea codului revine la linia de cod care se numește
SophiaMessagemetodă și întrerupe.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.
Pe bara de instrumente Depanare controale , selectați Depanați.
Observați că executarea codului trece la următoarea linie de cod și pune în pauză:
messageText = messageText + "\n\r" + AndrewMessage();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 ifde cod pentru instrucțiune, aceasta nu este. Utilizarea acoladelor{}pentru a defini blocurile de cod pentru aceastăif - else ifstructură ar fi ajutat la evitarea acestei erori. Pe măsură ce codul este scris, mesajul lui Andrew va fi adăugat lamessageTextfiecare 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ă.
Pe bara de instrumente Controale depanare , selectați Oprire.
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
{}laifstructura 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
AndrewMessageblocul de cod atunci cândname == "AllGreetings".În meniul fișier, selectați Salvare.
Utilizați instrumentele de depanare a interfeței de utilizator pentru a goli punctul de întrerupere pe care l-ați setat anterior.
În meniul Executare , selectați Pornire depanare.
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.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.