[? DAN ARMADARAS:?] Saluton, Mi estas [? Dan Armadaras?]. Hodiaŭ, ni tuj gxemados elpuriganta. Ne nur estas ni iranta paroli pri iuj teknikoj, sed ankaŭ ni tuj rigardi iuj de la karakterizaĵoj enhavis ene de la CS50 IDE kiuj permesas vi facile elpurigi programon. Nur unu ekzemplo de iu kiu povas iri malbone kaj ĝi estas efektive io ke ni jam vidis antaŭe. En tiu kazo, ĉi tiu estas C programon kiu akceptas entjero de la uzanto, dividu ĝin per du, kaj provizas la eligo reen al la uzanto. Nun de kion ni vidis pli frue en prelegoj, ni scias ke tio vere kaŭzas specifaj tipoj de problemoj de divido Kiam ni havas neparaj. Specife, ni simple forĵeti nenion post la dekuma punkto. Nun, ni scias ke ĉi hazarde estas la kazo. Kaj se ni kuras ĝi, ni povas konfirmi niaj suspektoj, unue, per kompilado. Kaj tiam, per kurado kaj enirante nepara nombro. Tio estas nenio nova. Sed tiu estas fakte ekzemplo de cimo kiu povas ekzisti ene de pli granda programo ke iĝas pli malfacila spuri. Eĉ kvankam ni scias kion la demando estas, la vera quid de la afero povus esti provanta identigi specife kie la eraro, identiganta kion tiu problemo estas, kaj tiam fiksi ĝin. Do disponigi tion kiel ekzemplo de kio povus esti io ke ni jam scias sed povas enterigita ene de aliaj elementoj de la kodo. Do malferminte tiun alian fonton kodo dosieron kiel ekzemplo, tiu divido problemo estas nun parto de pli granda programo. Ankoraŭ povus esti iom iom penadis, kaj ni eble povus facile identigi ĝin, speciale ekde ni ĵus diskutis tion. Sed ni povas diveni ke ĉi problemo povas ekzisti sur pli granda skalo. Se mi kompilos tion kaj nun kuri, tajpu neparan numeron, ni povas vidi ke ni ne ricevas precize la eligo ke ni atendus. En ĉi tiu aparta kazo, ni povus diri ke ni volas rakonti ĉiujn la nombroj ekde unu ĝis kelkaj specifaj nombro. Kaj ni povas vidi ke ni havas varion de temoj tie se ni elirigi, simple, 0 kaj 1 kiam ni ofertas enigaĵoj de 5. Do ni jam scias ke tie estas problemo tie. Sed ni ne scias precize kie tiu temo vere ekzistas. Nun unu el la manieroj kiuj ni povas provi ripari ĉi Estas iu kiun ni havas jam estis enmetita. Ni povas nur uzi ĝin sur pli granda skalo. On line 14, ni havas ĉi printf funkcio, kiu nin permesas presi la stato de diversaj pecoj de informo. Kaj tiu estas iu kiu vi devus utiligi ene de via programo provi elkompreni ĝuste kio estas okazanta en diversaj linioj de kodo. Do eĉ se tio ne estas la elirita fino ke ni efektive volas produkti el tiu programo, ni ankoraŭ havu iom debug deklaroj kie ni povas provi elkompreni ĝuste kio okazas ene de nia kodo. Do en ĉi tiu kazo, mi volas printf kun la debug etikedo. En tiu kazo, estas nur debug kordo ke mi estas supren-metante tiel ke ĝi iĝas tre klara en la eligo de mia kodo kio estas ke mi volas montri. Kaj eligo tie la nombro ke ni komputita. En tiu kazo, mi povus volas scii precize kio okazas antaŭ kaj post kelkaj specifaj kalkulado. Do mi povus uzi printf antaŭ kaj post tiu linio de kodo. En tiu kazo, mi povus eĉ fari ĝin iomete pli klara dirante debug antaŭ kaj debug post tiom ke mi ne konfuzas min kun multoblaj linioj kiuj aspektas identaj. Nun se ni rekompili ĉi kaj kuri , tajpu kelkajn kiel kvin pli, ni povas vidi ke ni havas nun eligo antaŭ kaj post kaj trovas ke ni ne faris klaran divido aŭ klara havantaj la nombron ke ni efektive volas fari. Nun en ĉi tiu kazo, ĉi tiu estas Ne vere klara eligo. Ĝi ne estas vere klara rezulto tiu ni volas el ĉi tiu aparta programo. Kaj tiu estas, denove, iomete elpensis. Sed, eble, unu el la aĵoj kiuj ni povus fari se la especificación diris ke ni volas dividi tion 2 kaj aldonu 1-- tiel en aliaj vortoj, ni volas rondigi up-- tiam ni sciu ke ni povis fari ke aparta afero, en ĉi tiu kazo. Nun tie ni scias ke ni estos povos aldoni 1 al nia duonigita nombro. Ni rekompili ĉi kaj certigu, ke kondutas la maniero kiun ni volas. Ni povas vidi ke nun antaŭ havante, ni havas la nombro 5. Post havi, ni havas la nombro 3, kiun laŭ nia specifo, estas kion ni volis fari. Sed se ni rigardas la eligo tie, ni povas vidu ke ni havu alian cimo entute, kiuj estas ke ni komencas nia conteo de 0. Nun ree, ĉi tio estas iu ke ni vidis en la pasinteco kaj ni povas ripari tute senhezite. Sed en ĉi tiu kazo, ni ankaŭ havis la profito uzi la printf deklaro rekte ene de la por buklo scii precize kie ke eraro estis okazanta. Do printf deklaroj estas tre utila en helpanta vi determini kie, ĝuste en via fontkodo, specifa eraro estas okazanta. Kaj ĝi estas ankaŭ grava al kompreni ke, kiel ni skribas kodo, ni havu supozoj pri la stato de programo. Aŭ ni havu supozoj pri kio programero estas fakte ĝentila aŭ malĝusta kiam poste kiel ni konstruas sur tiu programo kaj fari parton de kompleksaj kaj grandaj programo ke ni konscias ke kelkaj aspekto de kiu estas fakte kalesxon. Uzante printf povas vere helpi mallarĝigi malsupren kaj identigi la regionoj de programo kiu eble ne esti kondutas precize la vojon, kiun ni atendi, bazita sur nia supozoj. Sed estas aliaj iloj havebla, tiel, kiuj nin permesas provi figuro el kie eraro estas okazanta kaj ankaŭ, specife, kion okazas ene de la programo. Do uzante printf estas tre utila, kiam ni volas identigi specifajn areojn de programo kiu havas kelkaj cimoj. Sed ĝi ankaŭ iĝas teda post iom da tempo. En tiu kazo, ĉi tiu estas relative simpla programo kun nur unu aŭ du variabloj. Kaj ĝi iĝas tre facila por ni presi la valoro de tiuj variabloj en la kunteksto de la pli granda programo. Sed ni havu malsamajn programo kiu havas multajn variablojn. Kaj eble ne tute tiel facila uzi printf provi taksi kion estas okazanta al ĉiu el tiuj variabloj kiel la programo estas ekzekuti. Tie estas programo kiu ekzistas nomata erarserĉilo programo. En tiu kazo, kiu ni volas uzo estas la GNU erarserĉilo, aŭ GDB, kiu permesas nin inspekti la interna funkciadon de programo en multe pli detala maniero. Ni povas fakte ekzekutas GDB de la komandlinio tie per simple tajpante GDB kaj la komando kiu ni volas elpurigi. En tiu kazo, rakonti. Nun en ĉi tiu kazo, ni povas vidi ke ĝi nin al prompto kiu diras GDB. Kaj ni povas reale ekzekuti comandos por GDB por fakte komenci ekzekuton de la programo, halti ĝin ĉe certaj punktoj, taksi la variablojn kaj inspekti la variablojn kiuj ekzistas en la programo stato en tiu aparta momento, kaj tiel plu kaj tiel antaŭen. Ĝi provizas multan potencon al ni. Sed ĝi nur do okazas ke la CS50 IDE ankaŭ disponigas GUI aŭ uzanto interfaco por GDB ke permesas nin fari tion sen bezoni la komandlinio interfaco ajn aŭ ĉe ĉiuj paraj. La vojo ke mi povas aliri ke estas uzante la debug butono ĉe la plejsupro de la CS50 IDE. Nun en la pasinteco, kion ni havas vidita estas ke ni uzas la komandon linio kompili kaj poste ekzekuti programon. La debug butono faras ambaŭ de tiuj paŝoj. Sed ankaŭ Venigu la erarserĉilo langeton ekstremdekstro kiu permesas nin inspekti vario de propraĵoj de la programo kiel estas efektiviganta. Se mi klakas debug, en ĉi kazo, ĝi Venigu nova langeto en la konzolo fenestro ĉe la malsupro. Kaj vi povas vidi ke ĉi langeto havas iuj informoj ĉe la plejsupro. Kaj ni povas grandparte ignoras tion. Sed unu el la aĵoj ke ni volas rimarki estas ke ĝi eligas la sama afero ke ni akirus se ni provis kuri fari sur la C programon en la fina fenestro. Tie, ni povas vidi ĝi estas kurante Clang, kaj ĝi havas varion de flagoj, kaj ĝi kompili nia count.c dosiero, kiu estis la elektita langeto tiutempe ke mi batis debug. Do tiu estas tre utila ĉar nun uzante ĉi debug butonon, ni povas samtempe kompili kaj tiam ekzekuti la programon kiu ni efektive volas kuri. Unu el la flagoj kiuj estas grava, en tiu kazo, ni reale estis uzanta por la plej longa tempo sed ankaŭ ĵus faris kelkajn mano svingante [inaudible], kiu Estas ĉi tie. En tin, ĝi diras -ggdb3. En tiu kazo, kion ni estas rakontanta tin, nia tradukilo, estas ke ni volas kompili nia programo. Sed ankaŭ provizi kion estas nomata simbolo informo por ke la tradukilo fakte havas aliron al multa la suba informo enhavis ene de la programo. Pli specife, la nombro de funkcioj kiujn mi havas, la nomoj de tiuj funkcioj, la variabloj, la tipoj ke tiuj variabloj, kaj gamo de aliaj aferoj kiu helpos la erarserĉilo elfari lian funkciadon. Nun tie estas io alia tio estas grava mencii kiam ni diskutis kurado programon en tiu maniero. Rimarku ke havas reale alportis novan langeton en nia konzolo laŭ la fundo. Ni ne plu devas interagi rekte kun la fina fenestro. Sed tiu nova langeto estas fakte terminalprograo. Ĝi nur estas specifaj por la kurado programo kiun ni kreis. Rimarku ke en la profundeco, en kombino kun iuj eligo per Clang la tradukilo kaj GDB, kion ni povas grandparte ignoras, ĝi fakte montras la eligo de nia programo je la tre fundo. Nun estas grave realigi ke unu fenestro ja montros al vi la eligo de via programo sed ankaŭ povas akcepti enigon por ke programo, ankaŭ. Do avizo kiu diras bonvolu enmeti numeron, kiu estas la sama eligo ke ni devis havis en la terminala fenestro antaŭe. Sed gxi nun montris en tiu nova langeto. Mi povas enigo numero. Kaj ĝi efektive funkcion kiel ni atendas montrante al ni niajn debug, eligo, la eligo ke povus esti kalesxo, kiel ni vidis antaŭe. Kaj en la fundo, ĝi efektive havas iun aldonan eligo el MEP nur diras ke ĉi programo kompletigis. Nun kiel vi vidis en tiu aparta kuri tra, ĝi ne estis aparte utila ĉar eĉ kvankam ni havis la erarserĉilo menuo venu supren, tiu estis ankoraŭ kurado programo. Ĉe neniu punkto faris reale paŭzi ekzekuto por ni povi inspekti ĉiujn la variabloj enhavis ene. Estas io alia ke ni devas fari por akiri GDB rekoni ke ni volas paŭzi ekzekuto de la programo kaj ne nur permesus al procedi kutime kiel ni farus en iu alia kazo. Por paŭzi ekzekuto, en iu specifa linio, ni devas krei kio estas nomata ripozon punkto. Kaj ripozon punkto estas tre facile kreis en ĉi CS50 IDE prenante vian muson kaj klakante rekte maldekstren de iu specifa numero de linio. Iam mi faros tion, ruĝa punkto aperas, kiu indikas ke tiu linio estas nun ripozon punkto. Kaj la venontan fojon ke mi kuras GDB, ĝi ĉesos ekzekuto en tiu paŭzo punkto kiam atingas tiun linion de kodo. Nun tiu estas grava afero realigi ke ĝi ne estas nepre la kazo ke ĉiu linio de kodo estas reale atingebla. Se mi estus krei funkcion tien, por example-- malplenon f-- kaj nur faru pres linio here-- saluton world-- se mi neniam nomas tiun funkcion, tio estos la kazo ke, se mi starigis ripozon punkto ĉi tie, la funkcio neniam nomos. Kaj do, ĉi aparta ripozon punkto neniam reale paŭzi ekzekuto de la programo. Do diru ke mi ĝuste krei ripozon punkto sur iu linio de kodo ke efektive estos ekzekutitaj. Nun en ĉi tiu kazo, ĉi tiu estas la unua linio en la ĉefa funkcio. Do ĝi certe estos la kazo ke, tuj kiam mi komencas ekzekuton, la unua linio estos atingita. GDB estos paŭzi ekzekuto. Kaj poste, mi povos interagi kun la erarserĉilo. Vi povas agordi multnombraj linioj kiel breakpoints, se vi ŝatus. Ni povas ankaŭ krei linion supren tie en tiu segmento de kodo ke neniam estos atingita. Kaj ni povas ankaŭ agordi unu plua sube. La kialo ke ni farus volas fari tion ni iri en iomete pli detalo en nur momento. Do nun, mi povas simple malŝalti tiuj aldonaj rompo punktoj tiel ke ni povas rigardi kion okazas kiam mi havos unu solan paŭzo punkto en mia programo. Mi faris kelkajn ŝanĝoj al tiu programo. Do mi devas savi ĝin. Mi klaku debug por ke mi povas komenci la compilación kaj tiam ekzekuto de la erarserĉilo. Ni vidos ke, post momentoj, la linio kiu ni selektita kiel la paŭzo punkto estas emfazita en flava. Ni povas ankaŭ rimarki ke en la supra dekstra en la debug panelo ke la paŭzo ikono turnis en malgrandan teatraĵo ikono. Tio signifas ke ni havas paŭzo ekzekuto, en ĉi tiu aparta kazo. Kaj bati la Play butonon estus nin permesas rekomenci ekzekuton en tiu specifa punkto. Rimarku ke estas paro de aliaj butonoj havebla en ĉi debug panelo, ankaŭ. Transpaŝi, kiu min permesas ekzekuti tiu linio de kodo kaj transpaŝas al tiu linio al la apud unu, kiu, en tiu kazo, signifus ke la printf komunikaĵo estas ekzekutita. Kaj ĝi tiam paŭzi ekzekuto ĉe linio 13, kiel tia. Kaj estas ankaŭ paŝo en funkcio, kiun Estas utile se mi kreis alian funkcioj aliloke en la fontkodo. Kaj mi volas eniri tiuj funkcioj prefere ol ekzekuti tiu funkcio kiel tuto. Sed ni povos rigardi pli ĉe la ŝtupo en funkcio en nur momento. Nun rimarki iuj aliaj aĵoj kiuj reale ekzistas ene ĉi debug panelo. Ni havas ĉi panelo nomata voki pilo, kiu montras al ni kie ĝuste ni estas. En tiu kazo, ni estas interne de la ĉefa funkcio. Nia skribo estas nomita count.c. Kaj ni hazarde estas sur linio 13, kolumno unu, kiu estas ĝuste kion la emfazita regiono de la fontkodo indikas, kiel bone. Nun rimarkas ke ankaux montras sub la loka variablo sekcio ĉiuj variabloj kiuj ekzisti ene de ĉi tiu funkcio. Estas grave noti ke ĉiuj el la variabloj aperos en tiu loka variablo sekcio ene de funkcio, eĉ antaŭ ol ili estas difinitaj. Ni povas vidi ĉi tie ke ni havas variablo nomata num, havas aprioran valoron de 0, kaj estas de tipo int. Nun antaŭ ni efektive pravalorizi ĉiuj el tiuj variabloj, ni ne estas nepre guaranteed vidi valoron de 0. Kaj depende aliaj ekzekutoj ke vi plenumis kaj la stato de via memoro, kiam vi efektive ruli tiun programon, vi eble trovos ke vi ne vidas valoroj de 0 kaj, anstataŭe, iuj aliaj freneza nombroj. Sed ne maltrankviliĝu pri tio. Oni ne tuj esti adekvataj ĝis vi fakte pravalorizi la valoro. Nun en ĉi tiu kazo, ni povas vidi ke Mi plenumis iuj eligoj. Kaj mi, nun, paŭzis ekzekuto. Sed en ĉi tiu kazo, kio Mi vere deziras fari estas nun transpaŝas tiu linio de kodo por ke mi povas reale konsulti la uzanto por ke int ke ni volas uzi en nia programo. Nun en ĉi tiu kazo, kiam Mi trafis transpaŝas, avizo ke la Paŭzo aŭ prefere la Rekomenci butono ŝanĝis al ĉi Paŭzi butono ĉar tiu kodo estas reale ekzekuti. Kio okazas nun estas ke ĝi estas atendis nin enigi iu informo kiel ni povas vidi per nia eligo teksto ĉe la malsupro. Do ĝuste nun, ĉi tiu estas ne efektive paŭzis, kvankam, ia, aperas esti ĉar nenio okazas. Sed ĝi nur do okazas ke en mia specifa kazo sur linio 13, Mi atendas uzanto enigo. Kaj tiel GDB ne povas inspekti programon kiel ĝi kuras. La sekvantan fojon ke mi eniras iom input-- do mi eniru ke numero 5, kiel ni vidis en la past-- batis Reveno, kaj ni rimarkos ke, tuj, GDB paŭzoj kaj, denove, ĝi reliefigas la sekva linio. Sed rimarki ke nun, kiel rezulto de nia inputting valoron, ni ĝisdatigis tiun valoron interne de niaj lokaj variabloj, kiuj estas tre utile scii precize kion tio nombro en memoro. Nun mi povas permesi ĉi programo por daŭrigi ludi ĝis la fino de lia ekzekuto trafante Rekomenci. Ni povas vidi ke tre rapide faras la programon finpoluro ekzekutinte kun la sama eligo ke ni havis antaŭe, la erarserĉilo fermas, kaj nun ĉi programo haltis tute. Mi montros ke nur por la celoj de vidi kion okazas kiam ni efektive trafis Rekomenci. Sed ni efektive tuj volas reveni en ĉi tiun programon tiel ke ni povas provi debug precize kio okazas. Nun ke mi uzas la erarserĉilo, mi povas ne bezonas tiujn debug printf deklaroj. Do mi povis forigi ilin, mi faros nun nur reiri al nia simpla kodo ke ni havis antaŭ momento. Kiam mi savi la plani kaj ekzekuti ŝin, ĝi, denove, iri al tiu komenca rompi punkto kiun mi havis sur linio 11. Kaj mi povos inspekti mian variabloj kiel mi volas fari. Ĝi nur do okazas ke ĉi parto ne estas tre interesa, Kaj mi scias ke mi iros presi ĉi tiun komunikaĵon. Bonvolu enigi nombron. Kaj tiam, mi scias, ke mi tuj demandi la uzanton por ke entjero. Do eble mi vere volas movi miajn rompi punkto iomete pli malsupren. Vi povas forigi rompo punktoj klakante, denove, rekte maldekstren de tiu numero de linio. Ke ruĝa punkto malaperos, indikante ke tio ripozon punkto estas nun irita. Nun en ĉi tiu kazo, ekzekuto estis paŭzis. Kaj tiel ĝi ne vere tuj rekomenci en tiu aparta kazo. Sed mi povas agordi ripozon atentigi iomete poste. Kiam mi nun rekomencas mian kodo, ĝi rekomencos kaj diri la punkto de tiu ripozon punkto. Denove, mi batis Rekomenci. Ne ŝajnas kiel io okazas. Sed tio estas pro mia kodo atendas enigo. Mi eniros en numero 5, batis Enter, kaj nun la sekvanta paŭzo punkto estos frapita. Nun en ĉi tiu kazo, ĉi estas la linio de kodo ke, antaŭe, ni sciis pasis al esti kalesxon. Do ni taksi kio okazas pri tiu preciza punkto en tempo. Kiam linio estas reliefigita, ĉi linio ne jam estis ekzekutita. Do en tiu kazo, ni povas vidi ke mi havas kelkajn, kiuj Mi havas entjero nomis num kiuj havas valoron 5. Kaj mi tuj estos elfaranta iuj math sur tiun numeron. Se mi ne transpaŝas tio, ni povas rimarkos ke la valoro por num ŝanĝiĝis laŭ la aritmetiko ke ni reale faris. Kaj nun ke ni estas ene de tiu por buklo aŭ nun ke la por buklo mem estas reliefigita, ni vidas ke ni havas novan variablo nomis i ke tuj estos uzita en tiu por buklo. Nun memoru antaŭ tiu mi menciis ke foje vi tuj vidos ia freneza nombroj kiel defaŭltan antaŭ tiu nombro aŭ ke variablo estas fakte pravalorizitaj. Ni povas vidi ke precize tie en la ĉi ŝanĝiĝema vokis i, kiu havas ne ankoraŭ pravalorizitaj tiutempe de kolorigo. Sed ni povas vidi ke ĝi havas iun numeron ke ni ne reale atendi. Estas bone. Ne maltrankviliĝu pri ĝi ĉar ni havas ne reale pravalorizitaj tiun ciferon ĝis mi transpaŝas tiu linio kaj la valoro i estis pravalorizitaj al la valoro 1. Do por vidi ke tio estas vere la kazo, ni ne transpaŝas. Ni nun povas vidi ke tiu linio estis ekzekutita. Kaj ni nun reliefigante ĉi printf linio. Kaj ni nun povas vidi kiel niaj valoroj de i kaj 3 ŝanĝis super tempo. Ĉi tio estas tre utila por fari, fakte, estas transpaŝas linioj ree. Kaj vi povas trovi kion reale okazas ene de via por buklo Kaj kio okazas al la variabloj ene de tiu por buklo kiel tiu programo ekzekuto okazas unu paŝon samtempe. Nun ĉe ĉi tiu punkto, mi transpaŝis nur sufiĉe ke mi nun estas ĉe la fino de mia programo. Se mi ne transpaŝas ke, ĝi volo fakte ĉesi ekzekuto kiel ni vidis en la estinteco. Lasu min rekomenci tion, plue, do ke mi povas atentigi io alia ekstere, ankaŭ. En tiu kazo, estas nun demandas min, denove, por nombro, kiu Mi, denove, eniru. Sed tiu tempon, mi tuj eniros en pli granda nombro tiel ke la por buklo estos persisti pli fojojn. En tiu kazo, mi tuj eniri valoron de 11. Nun denove ĉar mi metis ripozon punkto ĉe linio 15, ĝi tuj reliefigi tiun linion. Ni povas vidi ke nia numero 11 estas korekte reprezentitaj en nia loka variabloj. Stepping super tio, ni povas nun rigardi kion okazas al nia valoro de i kiel ni procedas ene de tiu por buklo. Gets incremented ĉiufoje ni atingi la supron de tiu por buklo. Nun unu el la aĵoj kiuj povus utila fari dum ekzekuto de tiu programo estas por mi fakte ŝanĝi la variablojn flumezo vidi kio okazas al mia programo. En tiu kazo, mi povas fakte duobla alklaku la valoro. Rimarku ke ĝi iĝas tekstujon. Nun mi povas eniri malsamajn taksas entute vidi kiel mia programo kondutas kiam mi ŝanĝis tiu variablo. Nun en ĉi tiu kazo, la variablo i nun enhavas la valoron 10. Sed la programo estas ankoraŭ paŭzis en ekzekuto. Kiam mi transpaŝas, mi vidas ke la valoro i, kiun mi eniris kiel 10, ne estas pli granda ol la valoro de num, kiu tuj kaŭzas la por buklo halti ekzekuti. Nun tio ne estas la sola tial vi farus volas modifi la variablo en tiu loko. Vi povus reale volas provi modifi ĝin tiel ke vi povas daŭrigi ekzekuto de buklo aŭ por ke vi povas modifi iu valoro antaŭ ĝi atingas iun specifan aron de aritmetiko ke vi intencas plenumi. Do nun ke ni efektive ŝanĝi la valoro de i kiel la programo ekzekutis, ĝi kaŭzis la por buklo esi antaŭtempe ĉar, subite, i pasis al esti pli granda ol la valoro de num, signifante ke tiu por buklo jam ne bezonis esti ekzekutita. Plui, ĝi pasis al esti la kazo ke ni ŝanĝis la valoro de i kiam la linio 17 estis elstarigita, kiu estis la punkto en tempo ke la por buklo ekzekuto efektive estanta taksita. Se mi ŝanĝis la valoron de Mi sur malsama linio, diru 19 ni vidis malsamajn konduto ĉar linion 19 volus esti ekzekutita antaŭ la buklo kondiĉo estis reevaluated. Nun ĉe ĉi tiu punkto, mi estas, denove, fine de tiu programo. Kaj mi povas permesi tion al procedi permesus mian programon esi nature. Sed estas paro de aferoj kiuj estas gravaj por forpreni de tiu aparta diskuto. Vi devas taksi viajn proprajn supozojn pri kiel la kodo devas konduti. Ajna tempo vi pensas ke iu peco de kodo vi scias sekvinbero al labori, kiuj povus esti ruĝa flago iri reen kaj taksi, kaj vi suferos ke via supozo de ke kodo estas funkcianta estas fakte vera por kiom ĝi estas esprimita en via fontkodo. Sed eĉ pli al punkto estis, kiam ni uzas la erarserĉilo, vi povas meti breakpoints ĉe malsamaj linioj de kodo, pro kio la erarserĉilo al paŭzi ekzekuto ĉe ĉiu el tiuj linioj por ke vi povas taksi la memoro aŭ eĉ ŝanĝi ĝin en loko. Kaj cetere, memoru, ke vi povas krei plurajn breakpoints por ke vi povas ankaŭ rekomenci ekzekuton, skip super grandaj partoj de kodo, kaj gxi devos aŭtomate paŭzi ĉe la sekvanta paŭzo punkto. Ekzistas fakte pli progresintaj karakterizaĵoj de la erarserĉilo, ankaŭ. Sed ni devos raporti vin al iuj sekvaj filmetoj por vere turmentus aparte kiel uzi tiuj apartaj funkcioj. Por nun, dankon tre multe por rigardanta. Kaj bonŝancon elpuriganta.