Heob
Otkrijte curenje memorije pomoću Heoba.
Za postavljanje postavki za Heob, idite na Analyze > Heob.

U prozoru Extra arguments unesite dodatne argumente za pokretanje Heoba. Da biste u konzoli Heoba naveli dostupne argumente, u ovo polje unesite -H i pritisnite Enter.
Na primjer, upotrijebite opciju -oleaks.html za snimanje podataka o curenju u HTML datoteku. Uz ovu opciju možete koristiti opciju -g2 za vizualno grupiranje curenja u datoteci i opciju -L1024 za snimanje sadržaja curenja do 1024 bajta u datoteci. Na primjer, -oleaks.html -g2 -L1024
Da biste spremili promjene kao zadane postavke, odaberite
.
Da biste uklonili prilagođeni profil postavki, odaberite profil, a zatim odaberite Delete.
Sljedeći odjeljci detaljnije opisuju dostupne opcije.
Rezultati snimanja
Rezultati provjera prikazuju se u prikazu Memcheck i zapisuju u datoteku. Navedite naziv datoteke u XML output file. Heob stvara datoteku u direktoriju projekta.
Možete koristiti identifikator procesa (PID) kao varijablu u nazivu datoteke. Na primjer, leaks-%p.xml. Time se Heob ubacuje i u podređene procese.
Ostale varijable koje možete koristiti su %P za PID roditeljske instance i %n za naziv aplikacije.
Ako koristite varijable, Qt Creator ne može automatski otvoriti datoteku, ali je možete otvoriti iz direktorija projekta.
Rješavanje iznimaka
U Handle exceptions odaberite Off kako biste koristili standardni rukovatelj iznimkama i automatski priključili otklonitelj pogrešaka ako se aplikacija sruši. Ovo radi samo ako registrirate Qt Creator kao post-mortem otklonitelj pogrešaka odabirom Preferences > Debugger > General > Use Qt Creator for post-mortem debugging.
Odaberite On da biste koristili Heobov rukovatelj iznimaka koji provjerava razlog i lokaciju pada i otkriva je li do njega došlo zbog prekoračenja spremnika.
Odaberite Only za onemogućavanje svih Heob funkcija, osim instaliranja rukovatelja iznimkama. Ako se aplikacija sruši, prikazuje se samo trag hrpe pogreške. Stoga je ova opcija najkorisnija pri korištenju Heoba na konzoli ili za pokretanje u podređenim procesima.
Podizanje iznimki pri pogreškama
Odaberite potvrdni okvir Raise breakpoint exception on error za prikaz pogrešaka tijekom izvođenja aplikacije.
Ako je opcija onemogućena, pogreške kao što su double free, free nevažećeg pokazivača i nedostatak memorije jednostavno zapisuju sve prikupljene podatke u datoteku s rezultatima i vidjet ćete ih tek na kraju izvođenja aplikacije.
Ako je opcija omogućena, aplikacija se zaustavlja na mjestu pogreške. To je najkorisnije kada se koristi s opcijom Run with debugger, koja pokreće Heob pod otklanjivačem pogrešaka.
Zaštita stranica
U Page protection u odaberite Off kako biste koristili standardne funkcije alokacije memorije i omogućili samo otkrivanje curenja memorije.
Odaberite opciju After kako biste postavili zaštićenu stranicu na kraj svakog dodijeljenog bloka i bacili iznimku ako joj se pristupi. Odaberite opciju Before kako biste postavili zaštićenu stranicu ispred svakog dodijeljenog bloka. Ove opcije troše memoriju i usporavaju provjere te se stoga preporučuju samo za 64-bitne ili kratkotrajne programe.
Odaberite opciju Freed memory protection kako biste zaštitili sve stranice dodjele prilikom oslobađanja, tako da se njihov adresni prostor nikada više ne može koristiti. Ovo je korisno za otkrivanje pogrešaka use-after-free i double-free. Međutim, raspoloživi adresni prostor memorije može se brzo iscrpiti kod 32-bitnih programa.
Obrada podataka o curenju
U odjeljku Leak details odredite kako postupati s prikupljenim podacima o curenju memorije kada se proces zatvori. Odabir opcije None znači da se podaci o curenju ne prikupljaju. Ako aktivirate detekciju tipa curenja, Heob bi mogao trebati više vremena za prikupljanje podataka kada se proces zatvori.
Odaberite Simple kako biste zapisali svu memoriju koja nije oslobođena u datoteku s rezultatima.
Odaberite Detect Leak Types kako biste analizirali sve statičke i globalne blokove memorije u potrazi za referencama na curenja. Dostupni blokovi označeni su kao dostupni i rekursivno se provjeravaju na druge reference. Ako se pronađu reference, blokovi se označavaju kao neizravno dostupni. Preostali blokovi provjeravaju se na međusobne reference i označavaju se kao neizravno izgubljeni ili zajednički izgubljeni (ako se blokovi međusobno referenciraju). Blokovi koji nemaju nikakve reference označeni su kao izgubljeni. Odaberite Detect Leak Types (Show Reachable) kako biste u datoteku s rezultatima zabilježili i dostupne blokove.
Odaberite opciju Fuzzy Detect Leak Types kako biste označili blokove memorije kao dosegljive ili neizravno izgubljene ako sadrže reference na bilo koju adresu. Ova je opcija korisna kada se koristi s nekim prilagođenim alokatora (kao što je av_malloc() u ffmpeg) koji pohranjuju samo adresu negdje unutar bloka dodijeljenog prostora i ne referiraju se izravno na početak dodijeljenog bloka. Odaberite opciju Detect Leak Types (Show Reachable) kako biste u datoteku s rezultatima zabilježili i dosegljive blokove.
U Minimum leak size odaberite veličinu curenja u bajtima.
U Control leak recording odaberite Off za snimanje svih curenja. Ne možete promijeniti snimanje curenja dok je u tijeku.
Za pokretanje Heoba bez pokretanja snimanja curenja odaberite On (Start Disabled). U Heob konzoli uključite snimanje curenja pomoću opcije on ili off, izvezite sve rezultate pomoću opcije clear ili odaberite show za snimanje svih trenutnih curenja u datoteku s rezultatima. Otvorite datoteku kako biste vidjeli njezin sadržaj prije nego što se proces zatvori.
Da biste pokrenuli snimanje curenja pri pokretanju Heoba i pritom zadržali mogućnost upravljanja snimanjem, odaberite On (Start Enabled).
Vidi također Otkrivanje curenja memorije pomoću Heoba, Kako: Analizirati, Analizatori i Analiziranje koda.
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.