Valgrind Notes

References:
http://c.learncodethehardway.org/book/ex41.html
http://valgrind.org/docs/manual/sg-manual.html

Compile with debug flags:

g++ -o etherate etherate.cpp -lrt -O0 -g

Valgrind

valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes --track-fds=yes ./etherate -r

Callgrind - Annotate each line with the number of instructions it ran (Ir)

valgrind --tool=callgrind ./etherate -r
callgrind_annotate ./callgrind.out.2974 /path/to/tests.cpp

or

callgrind_annotate --auto=yes ./callgrind.out.2974

Cachegrind - Annotate each line with memory reads/writes/misses and instructions

valgrind --tool=cachegrind ./etherate -r
cg_annotate ./cachegrind-out /path/to/tests.cpp

KCachegrind

sudo kcachegrind cachegrind.out

Branch predictor simulator

gcc -o etherate_mt etherate_mt.c -lpthread -Wall -Werror -pedantic -ftrapv -fstack-protector-all -Og -g
sudo taskset -c 2 valgrind --tool=cachegrind --branch-sim=yes ./etherate_mt -I 1
sudo cg_annotate cachegrind.out.3331 /home/bensley/C/etherate_mt/etherate_mt.c

Previous page: Stack, Heap and Stack Frame
Next page: Bass-Kick-Hi-Hat