Vika 8. Aflúsun og forstilling Flashcards
Fyrsta nálgun í aflúsun forrits er oft að ?
Bæta við prentskipunum í kringum þá línu í kóðanum þar sem grunur er á að vandamálið liggi, og ítra sig áfram þar til nægum upplýsingum hefur verið safnað um hvað olli vandanum.
Önnur nálgun í aflúsun forrits er oft að ?
Skrásetja atburði í svokallaðan keyrsluál (e. log).
Hvað er keyrsluáll?
Keyrsluáll er einfaldlega notaður fyrir skrásetningar á atburðum og/eða upplýsingum um keyrslu(r). Hægt er að skrá færslur í keyrsluál innan úr forriti, í stað sérstakra prent skipana. Skráning í keyrsluál er betri en venjulegar prent skipanir fyrir margar sakir.
Dæmi um afhverju keyrsluáll er betri en að nota prent skipanir í aflúsun?
Þú getur sent keyrsluálinn í skrá, tengil (e. sockets), eða fjartengda netþjóna í stað þess að prenta bara í venjulegt úttak.
Færslur í keyrsluál styðja mismunandi alvarleikastig (til dæmis INFO, DEBUG, WARN, ERROR o.s.frv., sem standa fyrir upplýsingar, aflúsun, varúð og villu)
Fyrir ný vandamál eru góðar líkur á að keyrsluáll innihaldi nægar upplýsingar til að komast til botns í því hvað sé ekki að virka sem skyldi í kóðanum.
Til að skrifa í stýrikerfis keyrsluálana er hægt að nota ?
logger (Tenglar á ytra svæði.) skeljaforritið.
Flestum forritunarmálum fylgir einhvers konar aflúsari. Í Python er það ?
Python Debugger eða pdb.
Hvað er kyrrstæð greining (e.Static Analysis)?
Fyrir sum vandamál er óþarfi að keyra kóðann til að átta sig á hvar villa leynist.
Í svona tilfellum koma kyrrstæð greiningartól til sögunnar. Kyrrstæð greiningarforrit taka frumkóða sem inntak og greina hann eftir ýmsum kóðareglum til að ákvarða réttleika kóðans.
Rauntími
Jafngildi þess að telja hve langt sekúnduvísirinn hreyfðist á klukkunni frá byrjun forritskeyrslu til enda. Inni í þeirri tölu er þá líka tíminn sem fór í aðrar keyrslur framkvæmdar á sama tíma, eða tími þar sem forritið var hindrað (e. blocked) t.d. ef beðið var eftir inntaki/úrtaki eða að nettenging næðist.
Notendatími
Sú tímalengd sem eytt var í örgjörvanum í að keyra kóða notanda.
Kerfistími
Sú tímalengd sem eytt var í örgjörvanum í að keyra kjarnakóða
Hvað er að keyrslugreina ?
Oftast þegar fólk talar um keyrslugreina (e. profilers) er verið að vísa til örgjörvakeyrslugreina sem eru algengastir.
Það eru tvær tegundir af örgjörvakeyrslugreinum:
rakningar (e. tracing) og úrtaks (e. sampling) keyrslugreinar.
Rakningar keyrslugreinar ?
halda skrá yfir hvert einasta kall á fall (e. function call) sem forritið þitt gerir
Úrtaks keyrslugreinar ?
kanna forritið þitt reglulega (oftast á hverri millisekúndu) og taka niður hvað er í stafla (e. stack) forritsins.
Í forritum á borð við C eða C++ geta minnislekar valdið því að forritið þitt sleppir ekki minni tölvunnar sem það er ekki lengur að nota. Til að aðstoða við minnisaflúsun er hægt að nota tól eins og?
Valgrind, sem hjálpa þér að koma auga á hvar minnisleki geti átt sér stað.
Hvað er Auðlindavöktun (e. Resource Monitoring)?
Stundum er fyrsta skrefið þegar greina á frammistöðu forrits að gera sér grein fyrir neyslu þess á auðlindum tölvunnar, s.s. minni, örgjörvatíma eða pláss í geymslu sem það tekur.
Vinsælt tól fyrir vöktun?
Eitt vinsælasta tólið er htopTenglar á ytra svæði., sem er endurbætt útgáfa af topTenglar á ytra svæði.. htop birtir ýmsa tölfræði um þá ferla og keyrslur sem eru í gangi á vélinni. htop hefur ýmsa valmöguleika og flýtilykla, en sem dæmi má nefna: til að raða ferlum, t til að birta gögnin sem stigveldistré (e. Tree hierarchy) og h til að kveikja eða slökkva á birtingu upplýsinga um þræði
iotop
birtir rauntíma notkunarupplýsingar um inntak/úttak og getur komið sér vel til að athuga hvort ferli er að gera mikið af tímafrekum eða þungum aðgerðum, t.d. lestur eða skrif á diskadrif.
df og du
df birtir mælingar fyrir hverja deild (e. partition) á disknum, og du birtir diskanotkun fyrir hverja skrá í núverandi möppu. Með því að nota -h flaggið í þessum tólum er þeim sagt að prenta úttakið á læsilegri hátt (eða á ensku human readable format). Gagnvirkari útgáfa af du er ncduTenglar á ytra svæði. sem gerir þér kleift að færa þig um og milli mappa, og eyða skrám og möppum að vild.
free
birtir samtölur yfir notað og ónotað minni kerfisins. Upplýsingar um minnið eru einnig birtar í tólum eins og htop.
lsof
birtir upplýsingar um þær skrár sem eru opnar af ferlum. Það getur komið sér vel til að athuga hvaða ferlar hafa opnað ákveðna skrá.
ss
gerir notandanum kleift að fylgjast með tölfræði um netpakka á inn- og útleið, ásamt tölfræði um skil (e. interface). Algengt notkunartilvik ss er til að komast að því hvaða ferli er að nota ákveðið tengi (e. port) á vélinni. Til að birta upplýsingar um beiningar (e. routing), nettæki og skil er hægt að nota ipTenglar á ytra svæði.. Athugið að netstat og ifconfig eru nú orðin úrelt og ss og ip eru notuð þeirra í stað.
nethogs og iftop
eru góð gagnvirk skipanalínutól til að fylgjast með netnotkun vélarinnar.
hyperfine
Þegar verið er að velja hvaða forrit eða tól skuli nota, dugir stundum að gera afkastaprófun á þeim án þess að hafa áhyggjur af innri verkan þeirra (e. Black box benchmarking). Tól eins og hyperfine gera manni kleift að gera afkastapróf á einfaldan hátt á skipanalínuforrit.