cppcheck 和 valgrind 编译及使用

本文介绍cppcheck 和 valgrind 编译及使用。

一、准备工作

下载:

1
2
3
4
5
6
7
http://cppcheck.net/ 版本 2.5
具体地址:
https://codeload.github.com/danmar/cppcheck/tar.gz/2.5

https://www.valgrind.org/downloads/ 版本:3.17.0
具体地址:
https://sourceware.org/pub/valgrind/valgrind-3.17.0.tar.bz2

二、编译

cppcheck 编译步骤如下:

1
2
3
4
5
6
7
8
9
10
11
tar xf cppcheck-2.5.tar.gz 
cd cppcheck-2.5/
make -j
make install

mkdir build
cd build
cmake ..
cmake --build .
cd ../../

1
2
3
4
5
6
7
8
Makefile322: *** FILESDIR must be set!

分析:
BIN=$(DESTDIR)$(PREFIX)/bin

修改:
FILESDIR=/usr/local/share/Cppcheck
PREFIX=/usr/local

valgrind 编译步骤如下:

1
2
3
4
5
6
tar xf valgrind-3.17.0.tar.bz2 
cd valgrind-3.17.0
./autogen.sh 注:缺少这步会出现 valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory
./configure --prefix=/tmp/valgrind
make -j
make install

三、使用

cppcheck使用:

1
2
3
4
cppcheck ./ --enable=all --suppress='*:src/uuid/*' --suppress='*:src/crypto/*'  --suppress='*:src/xml/*' --suppress='*:src/zip/*' --suppress=variableScope  2>&1 | tee check_result.txt

cppcheck --enable=all 2>&1 | tee check_result.txt

valgrind 使用:

1
2
3
4
5
6
valgrind --log-file=./valgrind_report.txt --leak-check=full --show-leak-kinds=all --show-reachable=no --track-origins=yes ./a.out

valgrind --tool=memcheck --leak-check=full ./test

valgrind --leak-check=full ls -l

李迟 2021.8.28 周六 凌晨