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