hur man hittar en minnesläcka i linux

Till skillnad från nyare programmeringsspråk som Java och Python , programspråk som C kräver programmeraren att hantera sitt eget minne . C ger möjligheter att begära ledigt minne och returnera den till operativsystemet men inget mer . Eftersom språk som C erbjuder ingen mekanism sophämtning för att rensa ut objekt som inte längre är i bruk , måste programmeraren vara vaksamma och ta bort objekt när de inte längre behövs. Om ett program inte bli av med sin oanvända objekt , kan de resulterande minnesläcka få operativsystemet att krascha .
1 .
Installera ” valgrind ” felsökning svit .

valgrind paket är fritt tillgänglig på alla Linux-distributioner. För att installera det på Debian-härledda distributioner som Ubuntu , skriv ” sudo apt-get install valgrind . ” På RedHat eller Fedora , skriv ” sudo yum install valgrind . ”
2 .
Kompilera programmet med avlusningssymboler .

Den vanligaste kompilator för C -program på Linux -system är GCC . Använd ”-g ” flaggan för att ge gcc att inkludera avlusningssymboler i binär att det skapar . ( Avlusningssymboler är nödvändiga för debuggers som valgrind hänvisa till särskilda problem i din kod ) .

Om du har ett C- program som heter ” memoryhog. c . ” Till exempel skulle du kompilerar det med följande kommando: gcc-g memoryhog. c
3
Kör ditt program genom binära valgrind

.
såvida du inte annars kommer gcc namn ditt program ” a. out . ” För att köra binär heter ” a. ut ” med valgrind , skriver du: . . valgrind-läcka-check=full-show- nås=ja /a. out
4
Inspektera produktionen av valgrind

Om alla minnesläckor har fastställts , valgrind rapporter ”Alla heap block frigörs-inga läckage är möjligt ”.

Om några minnesläckor är närvarande, valgrind listor radnumret där läckan skapas.

tips och varningar

  • Om du är villig att installera minne-debugging krokar i koden , då mtrace verktyget kan ge liknande egenskaper valgrind .
  • minnesläckor utgör endast en klass i programmering bugg . Din kod kan vara fri från minnesläckor samtidigt lider av prestandaproblem eller säkerhetshål .
  • Visited 2 times, 1 visit(s) today

    コメント

    タイトルとURLをコピーしました