[? 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.