[Powered by Google Translate] [Valgrind]
[Nate Hardison, Harvard University]
Hoc est CS50, CS50.TV]
Nonnullus of plurrimi difficilis bugs in C progressio
mismanagement ex memoria.
Sunt ingentem numerum vias ad screw res sursum,
quos possidet dispertientes iniuriam amount of memoria,
oblivionis initialize variabilium,
scribens, ante vel post finis quiddam,
liberat memoriam multiple temporibus.
Symptoms vagarentur a intermittentium fragosus
ad arcano overwritten valores,
saepe locis ac temporibus longe a pristino errore.
Repetens hunc observatorum forsit retro ad subjectam radix causa
potest provocantes,
sed fortunate illic 'a benevolens progressio vocavit Valgrind
multum iuvare possunt ut.
>> Concurrentibus vobis protracta et sub Valgrind ut enable
rotensus tenendo de acervum memoria allocationes et aditus.
Quando Valgrind detegit forsit, eam dat vos immediata,
dirige notitia ut sino vos ut
facilius statuerentque consequat.
Valgrind etiam relationes de minus funestae memoria exitibus,
ut memoriam effluo, dispertientes acervum memoria,
atque obliti liberare eam.
Noster ut compilator, CLANGO, in nostra debugger, GDB,
Valgrind libera est software, et est installed in INSTRUMENTUM.
Valgrind currit in vestri binariae executable,
non tuo. c vel. h source codice lima,
ita scilicet quod tempus quaeque res ad copiam, ut proposuisti,
usura CLANGO aut Fac.
Tunc, currentes vestri progressio sub Valgrind potest esse
ut simplex ut iustus praepositione vexillum progressio imperium est, verbum Valgrind,
quae satus sursum Valgrind et decurrit progressio inside of eam.
Quando assumptione laboris, Valgrind facit aliqua complexu
jiggering ad configurare executable enim memoria compescit,
et sic potest habere amet cursus.
Progressio mos tunc exequi normaliter, sit multo tardius,
et quando finit Valgrind erit procer a summarium ejus memoria instructio.
Si recte, est simile huic:
Hic. / Clean_program
Volo currere iter est propositum.
Atque haec non sit aliquid, argumenta,
sicut si esset malim more SUO imperium in finem.
Clean progressio est iustus a imbecillam progressio creata sum
qui allocates spatii per obstructionum de ints in acervum,
adficient ex valores inside of eos, et liberat totum stipitem faciunt.
Hoc est quod vestri 'sagittam dirigens, nullus errores et non diffluat.
>> Alius maximus metric est totalis numerus bytes partita.
Fretus consilio, si in megabytes allocationes altioris,
vestri 'forsit facientem aliquid iniuriam.
Es vos superflue thesaurizantes effingo?
Es vos usura acervum repono, cum melius esset uti ACERVUS?
Sic, memoria errores possunt esse vere malum.
Magis exteriorem ones causa spectacular fragosus,
tamen etiam sic difficile pinpoint
quidnam sonus ducebatur.
More insidiose, protracta et memoria error
potest adhuc compilare, munde
et potest adhuc videor laboro recte
quia vos curo ut adepto Fortunatus, potissimum vicis.
Post plures "prospere prouentuum,"
vos vires iustus, qui arbitretur fragore est DENS de computer,
sed computer est nunquam iniuriam.
>> Cursor Valgrind can succurro vos indagamus causa visibilis memoria errores
necnon invenire latens errores te ne nondum cognoscitis circuitum.
Sulum vicis Valgrind detegit forsit, eam procer information about quid observari.
Singulis item est modice Adstrictior -
causa offensionis recta doctrina, qualis sit,
et paulo info de memoria involved -
Satis esse magna cura saepe loco regerent.
Hic est exemplum Valgrind cursor in a buggy progressio
qui facit invalido legere de acervum memoria.
Nullum videmus, errores nec admonitionibus in compilation.
Uh-oh, errorem summary dicit quod sunt duo errores -
duo invalidum legit molis IV - bytes, hoc est.
Malos legit facta in pelagus functio ipsius invalid_read.c,
primus in linea XVI et secunda in linea XIX.
Intueamur iuris.
Spectat, sicut prima, vocatio ad printf conatur Aliud legunt int praeteritum finis nostrae memoria stipitem faciunt.
Si respiciamus ad Valgrind scriptor output,
videmus quod Valgrind narraverunt nobis exigo ut.
Oratio erant 'trying ut legere incipit, 0 bytes
praeteritum finem obstructionum molis XVI bytes -
quattuor XXXII frenum ints quod nos disposuit.
Quod legitur prima oratio nostra recta cupiens impedimentum finis,
sicut videmus in nostra malus printf invoca.
Nunc, invalidum legit ut non videatur sicut ut magnus of a paciscor,
si continere flumen Lorem ipsum dolor utentes -
puta quod ponatur pars si propositione vel loop -
tunc rebus potest silently ire malus.
Vigilate quomodo possum currendam invalid_read progressio
et nihil ex ordinaria contingit.
FORMIDULOSUS, huh?
>> Sed plura genera Intueamur ut perspiciatis error in Codice,
quod puteus 'videre quomodo Valgrind detegit eos.
Nos iustus vidit exemplatum invalid_read,
ita nunc, scriptor reprehendo sicco an invalid_write.
Rursus, nullum errores nec admonitionibus in compilation.
Okay, Valgrind dicit quod sunt duo errores in hoc propositum -
et invalid_write et invalid_read.
Lorem ipsum Codicem sit amet.
Vultus amo weve 'got instantia classic strlen, uno addito bug.
Codicis non malloc an susicivus byte spatii
pro / 0 character,
ita cum str copy abiit ad scribam eam ad ssubstrlen "cs50 saxa!"
eam scripsit I byte praeteritum finis nostrae stipitem faciunt.
In invalid_read venit, quando tendimus vocatio ad printf.
Printf desinens legentem invalidum memoriam, quando legit / 0 character
ut respicit istud in fine huius E chorda suus 'excudere.
Sed nullus de fallebat Valgrind.
Videmus str partem caperent exemplum invalid_write
in linea XI de main, et invalid_read est pars printf.
Silex in, Valgrind.
Deinde fac, ne videatur magna.
Nos potest currere is progressio super quod super extra Valgrind
et nullum errorem indiciis.
>> Sed ad hanc variationem modicam Intueamur
quomodo res can adepto permalum.
Sic dedit nos in Codice paulum modo plus laedit.
Sumamus solum dispertientes tractus in acervum duplici filo
longitudo cs50 petris,
iam memor / 0 ingenium.
Sed tunc considerandum inicere supernationali diu chorda in memoriam obstructionum
qui S demonstrato.
Quae res quæ habent in memoria obstructionum: T punctis, ad?
Bene, si T punctis ad memorie, quod suus 'iustus Confines S,
venientem iustus post illam,
tunc possemus vobis scripta super pars T.
Lets run is code.
Intuendum est, quid acciderant.
Tangite nos repono in acervo, caudices utrumque videbatur typis ex recte.
Nihil videtur iniuriam omnino.
Tamen, lets vado tergum in nostram code
commendet sicco linea, ubi nos effingo cs50 saxa
secundum situm in memoriam, ostendit per t.
Nunc in dolor id nos currimus
solum vident contentis in primo memoria obstructionum procer foras.
Whoa, licet nos non fecisse str copy
ulla characters in secundam acervum icti, unum significata per T,
nos adepto a print foras.
Quidem, filum nos cumulabitur in nostram primus obstructionum
uagae primum obstructionum et in secundam clausus,
praeparante omnia videntur normales.
Valgrind, quamvis, refert nobis veram fabulam.
Ibi imus.
Omnium illorum invalidum legit et scribit.
>> Intueamur Aliud exemplum erroris.
Hic facimus aliquid potius infortunatus.
Nos carpseris spatium pro an int in acervum,
et nos initialize an int monstratorem - p - ad designandum quod spatio.
Tamen, nostras dum monstratorem est initialized,
junk quae data est ut suus 'iustus partem significat cumulum.
Ita nos, quum oneratis quod notitia in int i,
nos technice initialize i,
sed nos sic faceret junk notitia.
Vocatio ad asserunt, quod est habilem debugging macro
definitur in apte nomine asserere bibliotheca,
voluntas APSTRAHO progressio, si eius test conditio deficit.
Quod si non 0.
Secundum quod erat in spatio tumulus monstrassent P
et hoc modo non operaretur interdum elit.
Si facit, iustus questus sumus felis.
In compilator non excipiet huius erroris, sed Valgrind voluntatem firmam.
Ibi videmus error et sumuntur a nostrum vsum de qui junk notitia.
>> Cum tu collocant acervum memoriam, sed non deallocate eam vel eam gratuita,
quod dicitur Leak.
Pro parva, brevis progressio ut currit et statim exitusque
effluo sunt satis innoxius,
sed consilium maiores / vel diuturnitate vitae,
etiam parua Leak potest composuerit in aliquid major.
Enim CS50, nobis likkyn
curam de solvendis omnes iuxta acervum te memoriam collocant,
quia te volumus aedificare peritias proprie tractare manual processus
quibus in C.
Facere proposuisti, si exacte
unum-ut-unum correspondentia inter malloc et liberam vocat.
Fortunate, Valgrind can succurro vos memoria effluo quoque.
Hic est a RIMOSUS progressio vocavit leak.c qui allocates
in spatio tumulus scribit, sed non liberet eum.
Nos compilare, eam cum Planto et curre eam sub Valgrind,
videmus, dum errores non memini,
nos dont habent unum Leak.
Sunt XVI bytes definite perierat,
designandum quod monstratorem quod memoria non fuit in scope quando progressio exiverit.
Nunc, Valgrind non daret nobis ton of notitia super Leak,
Si autem usque ad hanc basim eius incelebres dat auditui
ad Ordine Rerun in - Leak-reprehendo = plenus
leaked pharetra videre de memoria,
puteus 'adepto magis notitia.
In congerie summa
Valgrind nobis narrat in quo memoria, quæ perierat initio fuerit partita.
Mauris auctor ut respiciens novimus,
Valgrind nos admonet leaked memoria
partita cum vocatio ad malloc in linea VIII de leak.c
in pelagus muneris.
Pulchellus nifty.
>> Valgrind categorizes effluo utendo terminis illis:
Certus amisit - hoc acervum partita memoria
ad quam progressio, iam non habebit monstratorem.
Valgrind scit te aliquando habuit monstratorem sed quia amisit track de ea.
Haec memoria esse certissimum leaked.
Indirecte amisit - hoc acervum partita memoria
Eodem modo, quo periit indicium.
Etenim si in nodum nectit perdidisti regula primae tabulae,
tunc prima node se esset certus perierat,
dum ulli subsequentem nodorum esset indirecte amittitur.
Artiore amisit - hoc acervum partita memoria
quae est regula Valgrind sitne an non.
Adhuc reachable est acervum partita memoria
ad quam progressio habet tamen monstratorem ad exitus,
quae typice intelligitur quod global variabilis puncta ad eam.
Sisto pro his effluo, youll etiam habent ut comprehendo optionem
- Adhuc-reachable = sic;
in vestri invocationem Valgrind.
>> His diversis casibus ut requirunt diversas Insidijs ad purgandum involves eos,
sed effluo debet removeri.
Infeliciter, statuentes effluo potest esse durum facere,
quia incorrect vocat ad liberum potest flare vestri progressio.
Nam si consideremus invalid_free.c,
videmus exemplum malae memoriae deallocation.
Quid unicum esset vocatio ad liberare totius obstructionum
memoriae significata per int_block,
est instead factus conatum liberare singulis int-amplitudo section
memoriae sigillatim.
Hoc deficiet catastrophically.
BUTIO! Quid error.
Is est certus non est bona.
Si tibi in huiusmodi errorem fixam tamen et nescis unde respicere,
amicus novus subsidii.
Vos suspicebatur ea - Valgrind.
Valgrind sicut semper, scit exigo quis 'sursum.
In alloc et libera comites non equatur sursum.
Weve 'got I alloc et IV liberat.
Et Valgrind docet ubi primus malus liberum voca -
unus ut Urguet blowup - venit de -
linea XVI.
Ut vides, malus vocat liberare sunt realiter malus,
ita et nos Recommend inmisso vestri progressio Leak
dum vos erant 'opus in questus functionality recta.
Satus vultus pro effluo solum post vestri progressio est opus proprie,
sine alia errores.
>> Suspendisse id enim et nos teneo.
Nunc quid moraris?
Vade currere Valgrind in vestri progressio vox iam.
Est nomen meum Nate Hardison. Hoc est CS50. [CS50.TV]