Przejdź do zawartości

Programowanie w systemie UNIX/Valgrind

Z Wikibooks, biblioteki wolnych podręczników.

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]