[? DAN ARMADARAS:?] Hi, Es esmu [? Dan Armadaras?].
Šodien mēs esam gatavojas būt meklē atkļūdošanu.
Ne tikai mēs gatavojamies runāt par dažiem paņēmieniem,
bet arī mēs ejam apskatīt dažas no pazīmēm, kas
ietvaros CS50 IDE, kas ļautu viegli atkļūdot programmas.
>> Tikai viens piemērs kaut kas var noiet greizi
un tas ir tiešām kaut kas ka mēs esam jau redzējis.
Šajā gadījumā tas ir C programma kas pieņem vesels skaitlis no lietotāja,
dala to ar divi, un sniedz izejas atpakaļ uz lietotāja.
Tagad no tā, ko mēs esam redzējuši agrāk lekcijās,
mēs zinām, ka tas faktiski izraisīt īpašu veidu dalījumu problēmas
kad mums ir nepāra numuriem.
>> Konkrēti, mēs tikai mest prom kaut kas aiz komata.
Tagad mēs zinām, ka tas notiek, ir tas gadījums.
Un, ja mēs palaist to, mēs varam apstiprināt , mūsu aizdomas, pirmkārt, apkopojot.
Un tad, palaižot un ievadot nepāra numuru.
>> Tas nav nekas jauns.
Bet tas ir faktiski piemērs bug ka
var pastāvēt plašākas programmas kas kļūst grūtāk izsekot.
Pat ja mēs zinām, kāda ir problēma ir patiesā lietas būtība
varētu mēģināt identificēt īpaši, ja kļūda,
Nosakot, kas šo problēmu ir, un pēc tam nosakot to.
Tā nodrošina šo kā piemēru par to, kas varētu būt kaut kas
ka mēs jau zinām, bet var būt aprakti citās elementiem kodu.
>> Tātad atverot šo citu avotu kods fails kā piemēru,
šī nodaļa problēma tagad daļa no lielāka programmu.
Vēl varētu būt nedaudz bit izdomāts, un mēs
varētu viegli identificēt, jo īpaši
jo mēs esam tikai apspriežam šo.
Bet mēs varam izrēķināt, ka šis Problēma var pastāvēt plašākā mērogā.
>> Ja es sastādīt šo un tagad palaist to, ievadiet nepāra numuru,
mēs varam redzēt, ka mēs nesaņem precīzi produkcija, ko mēs varētu sagaidīt.
Šajā konkrētajā gadījumā, mēs varētu teikt, ka mēs
vēlaties saskaitīt visus numurus no viena līdz pat dažiem konkrēto numuru.
Un mēs varam redzēt, ka mēs ir dažādi jautājumi
šeit, ja mēs esam outputting, vienkārši, 0 un 1, ja mēs piedāvājam ievadi 5.
>> Tātad mēs jau zinām, ka tur ir problēma šeit.
Bet mēs nevar zināt precīzi kur šis jautājums patiešām pastāv.
Tagad viens no veidiem, kas mēs varam mēģināt noteikt šo
ir kaut kas, mēs esam jau ir ieviesti, lai.
Mēs varam tikai izmantot to plašākā mērogā.
>> On line 14, mums ir Tas printf funkciju,
kas ļauj izdrukāt valsti dažādu informācijas daļas.
Un tas ir kaut kas jums būtu jāpiesaista jūsu programmā
mēģināt izdomāt, ko tieši ir notiek dažādos rindas kodu.
Tātad, pat tad, ja tā nav Galīgā produkcija, ka mēs faktiski
vēlas ražot no Šī programma, mēs joprojām
varētu būt dažas debug pārskatus, ja mēs
var mēģināt izdomāt ko tieši notiek iekšpusē mūsu kodu.
>> Tātad šajā gadījumā, es gribu printf ar atkļūdošanas tag.
Šajā gadījumā, tas ir tikai atkļūdot string
ka es esmu up-liekot, lai tā kļūst ļoti skaidri produkcijas manu kodu
kas tas ir, ka es gribu parādīt.
Un izejas šeit skaits ka mēs esam aprēķināts.
>> Šajā gadījumā, es varētu gribu zināt precīzi
kas notiek pirms un pēc kāda konkrēta skaitļošanai.
Tāpēc es varētu izmantot printf pirms un pēc šī koda rindu.
Šajā gadījumā, es varētu pat padara to mazliet vairāk skaidrs
pasakot debug pirms un atkļūdot pēc tik
ka man nav sajaukt ar sevi vairākas līnijas, kas izskatās identiski.
>> Tagad, ja mēs recompile šo un palaist tas, ievadiet numuru, piemēram, pieciem atkal,
mēs varam redzēt, ka mums ir tagad produkcija pirms un pēc
un konstatēt, ka mēs neesam darījuši skaidra sadalīšana vai skaidrs, kam skaita
ka mēs patiešām vēlamies darīt.
Tagad šajā gadījumā, tas ir nav īsti skaidra izejas.
Tas nav īsti skaidrs, ka iznākums mēs gribam no šo konkrēto programmu.
>> Un tas ir, atkal A mazliet izdomāts.
Bet, iespējams, viena no lietām, kas mēs varētu darīt, ja specifikācija teica
ka mēs vēlamies dalīt šo, 2 un pievienot 1-- tik citiem vārdiem sakot,
mēs vēlamies, lai noapaļot up-- tad mēs varētu zināt, ka mēs varētu
darīt, ka konkrētu lietu, kas šajā gadījumā.
Tagad šeit mēs zinām, ka mēs būsim var pievienot 1 līdz mūsu uz pusi numuru.
>> Pieņemsim recompile šis un apstiprina, ka šis
uzvedas tā, ka mēs vēlamies.
Mēs varam redzēt, ka tagad pirms ņemot, mums ir numurs 5.
Pēc tam, mums ir numurs 3, kas saskaņā ar mūsu specifikācijai,
ir tas, ko mēs vēlējāmies darīt.
Bet, ja mēs skatāmies uz izeja šeit, mēs varam
redzēt, ka mēs varētu būt vēl viens bug kopumā, kas ir
ka mēs sākam mūsu skaitu no 0.
>> Tagad atkal, tas ir kaut kas ka mēs esam redzējuši iepriekš
un mēs varam noteikt diezgan viegli.
Bet šajā gadījumā, mēs bija arī labā
izmantot printf paziņojumu tieši iekšpusē cilpa
zināt precīzi, kur ka kļūda bija noticis.
Tātad printf apgalvojumi ir ļoti noderīgi, palīdzot
jums noteikt, kur, Tieši jūsu avota kodu,
īpašs kļūda notiek.
>> Un tas ir arī svarīgi apzināties ka, jo mēs esam rakstot kodu,
mēs varētu būt pieņēmumus par valsts programmas.
Vai mēs varētu būt pieņēmumus par to, kas ir daļa no programmas
ir faktiski pareiza vai nepareiza, kad vēlāk kā mēs veidojam par šo programmu
un padarīt to daļa no sarežģīts un lielāks programma
ka mēs saprotam, ka daži aspekts no tā ir faktiski buggy.
>> Izmantojot printf tiešām var palīdzēt sašaurināt un identificēt
reģioni programmu, kas nedrīkst būt uzvedas tieši tā, ka mēs
gaidīt, pamatojoties uz mūsu pieņēmumiem.
Bet tur ir citi instrumenti pieejami, kā arī,
kas ļauj mums mēģināt izdomāt , kur kļūda notiek
Kā arī, konkrētāk, ko lietas kas notiek iekšpusē programmas.
>> Tātad, izmantojot printf ir ļoti noderīgi, ja mēs gribam
lai noteiktu konkrētas jomas programma, kas ir dažas bug.
Bet tas arī kļūst garlaicīgs pēc brītiņa.
Šajā gadījumā, tas ir salīdzinoši vienkārša programma
ar vienu vai diviem mainīgajiem.
Un tas kļūst ļoti viegli, lai mēs izdrukāt vērtību šiem mainīgajiem
saistībā ar lielāku programmas.
>> Bet mēs varētu būt atšķirīgs Programma, kas ir daudz mainīgie.
Un tas nevar būt pilnīgi tik viegli lietot printf
lai mēģinātu novērtēt to, kas notiek uz katra no minētajiem mainīgajiem
kā Programmas izpildes.
Tur ir programma, kas pastāv sauc atkļūdotājs programma.
Šajā gadījumā viens, ka mēs izmantošana ir GNU atkļūdotājs, vai GDB,
kas ļauj mums pārbaudīt iekšējais darbības principiem programma, daudz vairāk
detalizēts veidā.
>> Mēs faktiski varam izpildīt GDB no komandrindas
šeit, vienkārši ierakstot GDB un komanda, kas mēs gribam, lai atkļūdot.
Šajā gadījumā, skaits.
Tagad šajā gadījumā, mēs varam redzēt, ka tas mūs uz uzvedni, kas saka GDB.
Un mēs varam faktiski izpildīt komandas GDB
faktiski sākt izpildi programma, pārtraukt to noteiktos punktos,
izvērtē mainīgos un pārbaudīt mainīgos, kas
pastāv programmas valstī tajā brīdī,
un tā tālāk, un tā tālāk.
Tas nodrošina daudz jaudas, lai mums.
>> Bet tas tikai tā notiek, ka CS50 IDE arī
nodrošina GUI vai lietotājs interfeiss GDB ka
ļauj mums to darīt bez nepieciešamības komandrindas saskarne whatsoever
vai vispār pat.
Tā, ka es varu piekļūt ka ir, izmantojot pogu atkļūdošanas
pašā augšā CS50 IDE.
Tagad pagātnē, kas mums ir redzams, ir tas, ka mēs izmantojam komandu
line, lai apkopotu un pēc tam palaist programmu.
>> Atkļūdošanas poga dara abiem šiem soļiem.
Bet tas arī būs audzināt atkļūdotājs tab par tālu pa labi
kas ļauj mums pārbaudīt dažādus no īpašību programmas
kā tas ir izpildes.
Ja es noklikšķiniet debug, šajā gadījumā, tas būs audzināt
jauns tab konsole logu pašā apakšā.
>> Un jūs varat redzēt, ka tas ir cilnes kādu informāciju pašā augšā.
Un mēs varam lielā mērā ignorēt.
Bet viena no lietām ka mēs vēlamies, lai paziņojuma
ir tas, ka tā rezultāti tas pats, kas mums
varētu iegūt, ja mēs mēģinājām palaist padarīt par C programma termināļa logā.
>> Lūk, mēs varam redzēt, tas darbojas šķindēt, un tā ir dažādas karogiem,
un tas ir apkopojot mūsu count.c failu, kas bija izvēlēts tab brīdī
ka es hit debug.
Tātad tas ir ļoti noderīgi, jo Tagad, izmantojot šo atkļūdot pogu,
mēs varam vienlaicīgi sastādīt un pēc tam izpildīt programmu, ka mēs faktiski
vēlas darboties.
>> Viens no karogiem, kas ir svarīgs, šajā gadījumā,
mēs esam patiesībā bijis, izmantojot visilgāk
bet arī vienkārši darīju zināmu roku ilgviļņu [dzirdams], kas
tas ir viens tieši šeit.
In šķindēt, tā saka -ggdb3.
Šajā gadījumā, kas esam stāsta šķindēt, mūsu kompilators,
ir tas, ka mēs gribam, lai apkopotu mūsu programmu.
Bet arī sniegt to, ko ir sauc simbols informācija
tā, ka kompilators faktiski ir piekļuve uz daudz pamatā esošo informāciju
ietvertas programmas ietvaros.
>> Precīzāk, to skaits Funkciju, kas man ir,
nosaukumi šīm funkcijām, mainīgie, to veidi
ka šie mainīgie ir, un šķirni citas lietas, kas palīdz atkļūdotājs
veiktu savu darbību.
Tagad tur ir kaut kas cits tas ir svarīgi pieminēt
kad mēs apspriežam skriešanu programma, šādā veidā.
>> Ievērojiet, ka tas ir faktiski audzināti jaunu cilni mūsu konsole
pa dibenu.
Mums vairs nav, lai mijiedarbotos tieši ar termināļa logu.
Bet šī jaunā tab ir faktiski termināla logu.
Tas vienkārši ir raksturīgi darbībai programma, ka mēs esam radījuši.
>> Paziņojums, ka apakšā, kas kombinācija ar kādu produkciju
ko šķindēt kompilators un gdb, ko mēs varam lielā mērā ignorēt,
tas faktiski parāda produkciju Mūsu programma pašā apakšā.
Tagad tas ir svarīgi apzināties ka šis viens logs faktiski
parādīs izeja no jūsu programmā
bet arī var pieņemt ieguldījumu par šo programmu, kā arī.
>> Tātad paziņojums, ka saka ievadiet numuru,
kas ir tas pats izejas ka mums bija bija termināļa logā pirms.
Bet tas tagad redzams šajā jaunā cilnē.
Man varat ievadīt numuru.
Un tas tiešām funkcija kā mēs sagaidām
parādot mums mūsu debug, produkciju, produkcija, kas varētu būt buggy,
kā mēs esam redzējuši iepriekš.
Un pašā apakšā, to faktiski ir dažas papildu produkciju
no IKP, tikai saku, ka šī programma ir pabeigta.
>> Tagad, kā redzējāt šajā īpaši palaist cauri,
tas nebija īpaši noderīgi, jo pat
lai gan mums bija atkļūdotājs izvēlne nākt up, tas bija vēl darbojas programma.
Nevienā brīdī darīja faktiski pauzes izpildi par mums
lai varētu pārbaudīt visus mainīgie ietvertas.
Tur ir kaut kas cits kas mums ir jādara, lai
nokļūt gdb atzīt, ka mēs gribam lai apturētu programmas izpildi
un ne tikai ļaut tam turpināt parasti kā mēs darītu jebkurā citā gadījumā.
>> Lai apturētu izpildi, kādā konkrētā līnijā,
mums ir nepieciešams, lai radītu to, kas ir sauc par lūzuma punkts.
Un lūzuma punkts ir ļoti viegli radīt šajā CS50 IDE, ņemot peli
un uzklikšķinot tieši pa kreisi par kādu konkrētu līnijas numuru.
Kad es to izdarītu, sarkans dot Šķiet, kas norāda
ka šī līnija tagad ir lūzuma punkts.
>> Un nākamreiz, ka es palaist gdb, to apstāsies izpildi šajā lūzuma punkts
kad tas sasniedz šo rindiņu kodu.
Tagad tas ir svarīgs lieta saprast
ka tas nav obligāti lieta, ka katrs līnija koda
ir faktiski pieejama.
Ja es būtu izveidot funkciju šeit, lai example-- neesošu f--
un vienkārši darīt drukas līniju here-- sveiki world-- ja es nekad aicinu šo funkciju,
tas būs gadījums, ka, ja es noteikti lūzuma punkts šeit,
funkcija nekad netiks saukts.
Un tādēļ šī īpaši lūzuma punkts
nekad faktiski apturētu programmas izpildi.
>> Tātad pieņemsim, ka es pareizi izveidot pārtraukums punkts uz kādu rindiņu kodu
ka faktiski tiks izpildīts.
Tagad šajā gadījumā, tas ir Pirmā līnija galvenā funkcija.
Tātad tas noteikti būs gadījums ka, tiklīdz es sākt izpildi,
Pati pirmā līnija tiks sasniegts.
GDB būs apturētu izpildi.
Un tad, es būs iespēja mijiedarbojas ar atkļūdotājs.
>> Jūs varat uzstādīt vairākas rindas, kā robežkoncentrācija, ja jūs vēlētos.
Mēs varam arī izveidot līniju uz augšu šeit šajā segmentā kodu
kas nekad netiks sasniegts.
Un mēs varam arī iestatīt vienu turpmāk.
Iemesls, ka mēs būtu gribu darīt to mēs
iedziļināties mazliet vairāk detail tikai brīdi.
Tātad tagad, ļaujiet man vienkārši atslēgt šie papildu pārtraukuma punktus
lai mēs varētu apskatīt, kas notiek kad man ir vienu pārtraukumu
punkts manā programmā.
Esmu dažus izmaiņas šajā programmā.
Tāpēc man ir nepieciešams, lai saglabātu to.
Es noklikšķiniet atkļūdot, lai es varu sāk apkopot un pēc tam
izpilde atkļūdotājs.
>> Mēs redzam, ka, pēc momentiem, kas line ka mēs izvēlējāmies kā pārtraukuma
punkts ir iezīmēts dzeltenā krāsā.
Mēs varam arī paziņojums, ka augšējā tiesības atkļūdošanas panelī
ka pauzes ikona ir ieslēgts par maz spēlēšanas ikonu.
Tas nozīmē, ka mums ir pauze izpilde, šajā konkrētajā gadījumā.
Un dodas uz pogas Atskaņot būtu ļauj atsākt izpildi
šajā konkrētajā brīdī.
>> Ievērojiet, ka tur ir pāris citu pogas pieejams šajā atkļūdošanas panelī,
arī.
Soli pa, kas ļauj man izpildīt šo vienu rindiņu kodu
un soli pār šo līniju uz blakus viens, kas, šajā gadījumā,
nozīmētu, ka printf paziņojums tiek izpildīts.
Un tas būs pēc tam pauze izpilde on line 13, piemēram, tā.
>> Un tur ir arī solis par funkciju, kas
ir noderīgi, ja esmu izveidojis otru funkcijas citur pirmkodu.
Un es gribu, lai soli šīs funkcijas, nevis
izpildīt šo funkciju kopumā.
Bet mēs apskatīt vairāk pie solī par funkciju tikai brīdi.
Tagad novērojat kādu citu lietu, kas faktiski eksistē šajā atkļūdošanas panelī.
>> Mums ir tas panelis sauc zvaniet kaudze, kas mums rāda
kur tieši mēs esam.
Šajā gadījumā, mēs ir iekšā no galvenā funkcija.
Mūsu skripts sauc count.c.
Un mēs gadās būt līnija 13, viena kolonna, kas
Tieši tas, ko uzsvēra reģions pirmkoda norāda, kā arī.
>> Tagad ievēroju, ka tas arī parāda saskaņā ar vietējās mainīgo sadaļu
visiem mainīgajiem lielumiem, kas pastāvēt šai funkcijai.
Ir svarīgi atzīmēt, ka visi mainīgie lielumi
parādīsies šīs vietējās mainīgais sadaļa ietvaros funkciju,
pat pirms tie ir definēti.
Mēs varam redzēt šeit, ka mums ir mainīgais sauc num, ir noklusējuma vērtība ir 0,
un tas ir tipa int.
>> Tagad, pirms mēs faktiski inicializētu visus šos mainīgos lielumus,
mēs esam ne vienmēr garantēta, lai redzētu vērtību 0.
Un atkarībā no citu nāvessoda izpildes ka esat veicis
un stāvokli jūsu atmiņā, kad jūs faktiski palaist šo programmu,
jūs varētu atrast, ka jums neredzu vērtības 0
un, tā vietā, daži citi traki numuri.
>> Bet nav jāuztraucas par to.
Tas nebūs būtiska līdz jūs tiešām sāktu vērtību.
Tagad šajā gadījumā, mēs varam redzēt, ka Man ir veiktas dažas izejas.
Un es esmu, tieši tagad, apturēta izpildi.
Bet šajā gadījumā, kas Es tiešām gribu darīt
ir tagad soli pa šo līniju koda tā, ka es faktiski var
vaicājumu lietotājam šim int ka mēs vēlamies izmantot mūsu programmā.
>> Tagad šajā gadījumā, kad Es hit soli pāri, paziņojot
ka Pauze vai drīzāk Atsākt poga ir mainījusies līdz šim pauzes poga
jo šis kods ir faktiski izpildes.
Kas notiek tagad ir tā, ka tas ir
gaida mūs ievadīt kādu informāciju kā mēs varam redzēt mūsu izejas tekstu
pašā apakšā.
>> Tāpēc tieši tagad, tas ir faktiski nav apturēta,
Pat ja tas, veida, šķiet, būt tāpēc, ka nekas nenotiek.
Bet tas tikai tā notiek, ka mans īpašais gadījums uz līnijas 13,
Es gaidu lietotāja ievadi.
Un tā GDB nevar pārbaudīt programma, kā tā darbojas.
>> Tagad nākamreiz ka es ieiet daži input-- tāpēc es ņemšu ievadīt šo numuru 5,
kā mēs esam redzējuši, past-- hit atpakaļ, un mēs
paziņo, ka nekavējoties, GDB pauzes un, atkal, uzsver nākamo rindiņu.
Bet paziņo, ka tagad, kā rezultāts mūsu ievadot vērtību,
mēs esam atjauninājuši šo vērtību iekšā mūsu vietējās mainīgie, kas
ir ļoti noderīgi zināt precīzi ko tas skaits bija atmiņā.
>> Tagad es varu ļaut šo programmu, lai turpinātu spēlēt līdz beigām tā izpildes
, trāpot CV.
Mēs varam redzēt, ka ļoti ātri Vai programma apdare izpildes
ar to pašu produkciju, ko mēs bija pirms, atkļūdotājs aizveras,
un tagad šī programma ir apstājusies pilnībā.
>> Man rāda, ka tikai par nolūki redzēt, kas
notiek, kad mēs faktiski hit CV.
Bet mēs tiešām gatavojamies vēlas doties atpakaļ uz šo programmu
lai mēs varētu mēģināt atkļūdot Tieši to, kas notiek.
Tagad, ka es esmu, izmantojot atkļūdotājs, es varētu nav nepieciešams šos debug printf paziņojumus.
>> Tāpēc es varētu noņemt tos kā es darīšu tagad tikai, lai dotos atpakaļ uz mūsu vienkāršāku kodu
ka mums bija pirms brīža.
Tagad, kad es ietaupīt programmu un izpildīt to,
tas, atkal, dodieties uz šo sākotnējo lūzuma punkts, kas man bija uz līnijas 11.
Un es varēsiet pārbaudīt Mani mainīgie kā es gribu darīt.
>> Tas tikai tā notiek, ka šis daļa nav ļoti interesanti,
Un es zinu, ka es esmu gatavojas izdrukāt šo paziņojumu.
Ievadiet numuru.
Un tad, es zinu, ka es esmu gatavojas jautāt lietotājam šim skaitlim.
Tāpēc varbūt, es tiešām gribu, lai pārvietotos manu lūzuma punkts mazliet tālāk uz leju.
>> Jūs varat noņemt pārtraukuma punktus noklikšķinot, atkal, tieši
pa kreisi no šīs līnijas numuru.
Ka red dot pazudīs, norādot ka lūzuma punkts tagad ir pagājis.
Tagad šajā gadījumā, izpilde ir apturēta.
Un tā tas nav reāli gatavojas atsākt šajā konkrētajā gadījumā.
Bet es varu noteikt pārtraukumu apakšpunkts mazliet vēlāk.
>> Un, kad es tagad atsākt manu kods, tas atsāks un pateikt
punkts šī lūzuma punkts.
Atkal, es hit Atsākt.
Nav šķist kaut kas notiek.
Bet tas ir tāpēc, ka mana kods gaida ievadi.
Es ievadiet numuru 5, hit Enter, un Tagad nākamais lūzuma punkts būs hit.
>> Tagad šajā gadījumā, šī ir līnija koda
ka, pirms, mēs zinājām gadījās būt buggy.
Tātad pieņemsim novērtēt to, kas notiek šajā konkrētajā brīdī.
Kad līnija ir iezīmēts, šis līnija vēl nav izpildīts.
Tātad šajā gadījumā, mēs varam redzēt ka man ir vairāki, kas
Man ir vesels skaitlis, ko sauc num kas ir vērtība 5.
Un es esmu būs veicot daži math par šo numuru.
>> Ja es soli pa to, ka mēs varam Ievērojiet, ka vērtību num
ir mainījusies saskaņā ar aritmētika, ka mēs esam patiesībā darījuši.
Un tagad, kad mēs esam iekšpusē šis cilpa
vai tagad, kad cilpa pati par sevi ir iezīmēts,
mēs redzam, ka mums ir jauna mainīgais sauc i ka
tiks izmantoti ar to, ka, lai cilpas.
>> Tagad atceros pirms minētā I minēja, ka reizēm jūs esat
gatavojas redzēt kādu traks skaitļus kā noklusējuma pirms šo numuru
vai arī, ka mainīgais ir faktiski inicializēts.
Mēs varam redzēt, ka precīzi šeit šajā mainīgā
sauc i, kas ir ne vēl nav inicializēts
laikā izceļot.
Bet mēs varam redzēt, ka tas ir dažas skaits ka mēs nebūtu reāli gaidīt.
>> Tas ir labi.
Neuztraucieties par to jo mums nav reāli
inicializēts šo numuru, līdz I soli pa šo līniju un vērtību
i ir inicializēts ar vērtību 1.
Tātad, lai redzētu, ka tas ir faktiski gadījumā, pieņemsim soli pāri.
Tagad mēs varam redzēt, ka līnija ir izpildīts.
Un mēs tagad izceļot šis printf line.
>> Un tagad mēs varam redzēt, kā mūsu vērtības I un 3 laika gaitā ir mainījusies.
Tas ir ļoti noderīgi, lai darīt, patiesībā, ir soli pa līnijām atkārtoti.
Un jūs varat atrast to, kas patiesībā notiek iekšpusē jūsu cilpas
un kas notiek ar mainīgie, ka cilpas iekšpusē
kā šīs programmas izpildi notiek vienu soli laikā.
>> Tagad šajā brīdī, es pastiprināts nekā tikai pietiekami
ka es tagad esmu beigās manā programmā.
Ja es soli pa to, ka tas būs faktiski vairs izpildi
kā mēs esam redzējuši iepriekš.
Ļaujiet man restart tas, atkal, tāpēc ka es varētu norādīt kaut ko citu, kas,
arī.
>> Šajā gadījumā, tas ir tagad jautā man, atkal,
par vairākiem, kas Es, atkal, ievadiet.
Bet šoreiz, es esmu gatavojas ieiet lielāku skaitu tā, ka uz cilpas
būs atkārtot vairākas reizes.
Šajā gadījumā, es esmu, lai ievadītu vērtību 11.
>> Tagad atkal, jo es gribētu noteikti lūzuma punkts pie līnijas 15,
tas notiek, lai izceltu šo līniju.
Mēs varam redzēt, ka mūsu skaitlis 11 ir pareizi
pārstāvētas mūsu vietējo mainīgie.
Kāpj pāri, ka mēs varam tagad skatīties, kas notiek ar mūsu vērtību i
kā mēs turpināt iekšpusē šis cilpa.
Tas izpaužas palielināts katru reizi, kad mēs sasniegtu aug ka par cilpa.
>> Tagad viena no lietām, kas varētu lietderīgi darīt izpildes laikā
Šīs programmas ir man faktiski mainīt mainīgie midstream lai redzētu
kas notiek ar manu programmu.
Šajā gadījumā, es faktiski var dubultklikšķi vērtību.
Ievērojiet, ka tas kļūst par teksta laukā.
>> Tagad es varu ieiet atšķirīgs vērtējam kopā
lai redzētu, kā mana programma uzvedas kad es esmu mainījies šo mainīgo.
Tagad šajā gadījumā mainīgais Es tagad satur vērtību 10.
Bet programma ir vēl apturēta izpildē.
Kad es soli vairāk, es redzu, ka vērtība i, kuru es ievadīta kā 10,
ir ne lielāks par vērtību, num, kas tieši izraisa cilpa
apstāties izpildes.
>> Tagad tas nav vienīgais Iemesls, kāpēc jums būtu
vēlaties mainīt mainīgo vietā.
Jūs varētu tiešām vēlaties mēģināt pārveidot tā, lai
ka jūs varat turpināt izpilde cilpu
vai tā, ka jūs varat mainīt dažas vērtības, pirms tas
sasniedz kādu īpašu komplektu aritmētisko ka jūs gatavojaties veikt.
>> Tāpēc tagad, ka mēs faktiski mainīt I vērtība, jo programma tika izpildes,
tas izraisīja cilpas atmest priekšlaicīgi, jo, visi pēkšņi, i
gadījās būt lielāka nekā vērtība NUM, kas nozīmē, ka uz cilpas
vairs nav nepieciešams, lai tiktu izpildīts.
Turklāt tas noticis būt lieta, ka mēs mainīts vērtība i
kad līnija 17 tika uzsvērts, kas bija brīdis
ka par cilpu izpildei tika faktiski tiek vērtēti.
>> Ja man bija mainījies vērtību Es par citu līniju, teiksim 19,
mēs būtu redzējuši atšķirīgs uzvedība jo līnija 19 būtu
ir izpildīti pirms cilpa nosacījums tika pārvērtēti.
Tagad šajā brīdī, es esmu, atkal, beigās šīs programmas.
Un es varu ļaut tam doties uz ļauj mana programma atmest dabiski.
Bet tur ir pāris lietas ka ir svarīgi, lai paņemtu
no šā konkrētā diskusijas.
Jums ir nepieciešams, lai novērtētu Jūsu pašu pieņēmumi
par to, kā kods būtu uzvedas.
Jebkurā laikā jūs domājat, ka daži gabals Koda jūs zināt, kas notiek uz darbu,
kas varētu būt sarkanais karogs iet atpakaļ un novērtēt, un būt pārliecināti,
ka savu pieņēmumu kā šis kods darbojas
ir tiešām taisnība, kā tas ir izteikts jūsu avota kodu.
>> Bet vēl līdz punktam bija, kad mēs izmantojam atkļūdotājs,
Jūs varat likt kontrolpunkti pie dažāda veida kods,
kas radīs atkļūdotājs apturētu izpildi katrā no šīm līnijām
lai jūs varētu novērtēt atmiņa vai pat mainīt to vietā.
Un atkal, atcerieties, ka jūs varat izveidot vairākas kontrolpunkti, lai jūs
var arī atsākt izpildi, izlaidiet pār lielu daļu no koda,
un tas būs automātiski apturētu nākamajā lūzuma punkts.
>> Tur tiešām vairāk uzlabotas iezīmes atkļūdotājs, kā arī.
Bet mums nāksies nodot jums dažiem turpmākajiem video
Lai tiešām ķircināt intervālu, kā izmantot šos īpašas funkcijas.
Tagad, paldies ļoti daudz, lai skatītos.
Un labu veiksmi debugging.