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 prikazali 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 svoje promjene kao zadana postavka, odaberite
.
Da biste uklonili prilagođeni profil postavki, odaberite profil, a zatim odaberite Delete.
Sljedeći odjeljci detaljnije opisuju dostupne opcije.
Zapis rezultata
Rezultati provjera prikazuju se u prikazu Memcheck i zapisuju u datoteku. Odredite 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 također ubacuje u podređene procese.
Ostale varijable koje možete koristiti su %P za PID roditelja 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 otklonivač pogrešaka ako se aplikacija sruši. Ovo funkcionira samo ako registrirate Qt Creator kao post-mortem otklonivač 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 da onemogućite sve Heob funkcije, 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 nakon oslobađanja, tako da njihov adresni prostor nikada više ne može biti upotrijebljen. 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 pri zatvaranju procesa.
Odaberite Simple kako biste zapisali svu memoriju koja nije oslobođena u datoteku s rezultatima.
Odaberite Detect Leak Types kako biste analizirali sve blokove statičke i globalne memorije na reference 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 referiraju). Blokovi koji nemaju nikakve reference označeni su kao izgubljeni. Odaberite opciju Detect Leak Types (Show Reachable) kako biste u datoteku s rezultatima zabilježili i dosegne blokove.
Odaberite opciju Fuzzy Detect Leak Types kako biste označili blokove memorije kao dostupne ili neizravno izgubljene ako imaju reference na bilo koju adresu. Ova je opcija korisna kada se koristi s nekim prilagođenim alokatorima (kao što je av_malloc() u ffmpeg) koji pohranjuju samo adresu negdje unutar alociranog bloka i ne referiraju se izravno na početak alociranog bloka. Odaberite opciju Detect Leak Types (Show Reachable) kako biste u datoteku s rezultatima zabilježili i dostupne blokove.
U Minimum leak size odaberite veličinu curenja u bajtima.
U Control leak recording odaberite Off za snimanje svih curenja. Ne možete mijenjati snimanje curenja dok je u tijeku.
Za pokretanje Heoba bez pokretanja snimanja curenja odaberite On (Start Disabled). U Heob konzoli uključite snimanje curenja ( on ) ili ( off), zabilježite sve rezultate ( clear ) ili odaberite show za snimanje svih trenutnih curenja u datoteku s rezultatima. Otvorite datoteku i pogledajte njezin sadržaj prije nego što proces završi.
Da biste pokrenuli snimanje curenja pri pokretanju Heoba i pritom zadržali mogućnost kontrole snimanja, 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.