Programowanie w systemie UNIX/Valgrind

Valgrind jest narzędziem do debugowania pamięci, wykrywania wycieków pamięci oraz profilowania aplikacji.[1][2]

Kompilacja programu

edytuj
  • kompilacja z opcją -g[3] i -O0[4]
  • uruchomienie valgrinda z opcją -v
gcc c.c -g
valgrind -v ./a.out 

Możemy zapisać wynik Valgrinda do pliku, w celu łatwiejszej analizy:

valgrind -v ./a.out >& out # re-direct valgrind (and a.out) output to file 'out'

callgrind

edytuj

Uruchamiamy:[5]

 valgrind --tool=callgrind ./(Your_binary)

to powoduje utworzenie pliku : callgrind.out.x

Instalujemy program do przeglądania tych plików : kcachegrind

 sudo apt install kcachegrind

I uruchamiamy z konsoli :

 kcachegrind


Otrzymujemy obraz przedstawiający co zajmuje najwięcej czasu

Przykłady

edytuj

Przykład użycia:[6][7]

valgrind --tool=memcheck ./a.out

albo[4]

 valgrind --leak-check=yes ./a.out

lub:[8]

valgrind --leak-check=full ./a.out

Odnośniki

edytuj
  1. Valgrind w wikipedii
  2. Debugowanie błędów pamięci pod Linuxem. Valgrind + memcheck by mateusz midor
  3. Using valgrind by Tia Newhall
  4. 4,0 4,1 The Valgrind Quick Start Guide
  5. stackoverflow question : how-can-i-profile-c-code-running-in-linux
  6. How to Detect Memory Leaks Using Valgrind memcheck Tool for C / C++ by Himanshu Arora on November 28, 2011
  7. Using Valgrind to Find Memory Leaks and Invalid Memory Use By Alex Allain
  8. How to deallocate memory without using free() in C? by Narendra Kangralkar

Zobacz również

edytuj