Nwlapcug.com


Come trovare una perdita di memoria in Linux

Come trovare una perdita di memoria in Linux


A differenza dei più recenti linguaggi di programmazione quali Java e Python, linguaggi di programmazione come C richiedono al programmatore di gestire la propria memoria. C fornisce strutture per richiedere memoria libera e tornare al sistema operativo, ma niente di più. Poiché i linguaggi come il C non offrono nessun meccanismo di garbage collection per pulire gli oggetti che non sono più in uso, il programmatore deve essere vigile e rimuovere gli oggetti quando non sono più necessari. Se un programma non sbarazzarsi dei suoi oggetti inutilizzati, la perdita di memoria risultante può causare il blocco del sistema operativo.

Istruzioni

1

Installare la suite di debug "valgrind".

Il pacchetto di valgrind è liberamente disponibile su tutte le distribuzioni Linux. Per installarlo su distribuzioni derivate da Debian come Ubuntu, digitare "sudo apt-get install valgrind." Su RedHat o Fedora, digitare "sudo yum install valgrind."

2

Compila il programma con simboli di debug.

Il compilatore più comune per i programmi C su sistemi Linux è gcc. Uso il "-g" bandiera per indicare a gcc per includere i simboli di debug nel binario che crea. (Simboli di debug sono necessari per i debugger come valgrind per riferirsi a problemi specifici nel codice).

Se si dispone di un programma C denominato "memoryhog.c." per esempio, volete, compilate utilizzando questo comando: gcc -g memoryhog.c

3

Eseguire che il programma del binario attraverso valgrind.

A meno che non si dice altrimenti, gcc sarà il nome tuo programma "a. out." Per eseguire il tuo binario denominato "out" utilizzando valgrind, digitare questo comando: valgrind - controllare le perdite = pieno - Visualizza-raggiungibile = yes. /a.out

4

Esaminare l'output di valgrind.

Se tutti la memoria delle perdite sono stati risolti, valgrind segnala "heap tutti i blocchi sono stati liberati..--perdite non sono possibile".

Se eventuali perdite di memoria sono presenti, valgrind elenca il numero di riga in cui viene creata la perdita.

Consigli & Avvertenze

  • Se siete disposti a installare ganci memoria di debug nel codice, quindi utilità mtrace può fornire funzionalità simili a valgrind.
  • Perdite di memoria costituiscono solo una classe di bug di programmazione. Il codice può essere libero di perdite di memoria mentre ancora soffre di problemi di prestazioni o vulnerabilità di sicurezza.