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 też

[edytuj]