本文介绍cppcheck 和 valgrind 编译及使用。
一、准备工作
下载:
1 | http://cppcheck.net/ 版本 2.5 |
二、编译
cppcheck 编译步骤如下:
1 | tar xf cppcheck-2.5.tar.gz |
1 | Makefile322: *** FILESDIR must be set! |
valgrind 编译步骤如下:
1 | tar xf valgrind-3.17.0.tar.bz2 |
如果运行已编译好的 valgrind,提示valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory
另一解决方法。其原因是未配置库目录,示例如下:
1 | export VALGRIND_LIB=/home/latelee/valgrind/lib/valgrind |
注:库似乎在/usr/local/lib/valgrind
目录
三、使用
cppcheck使用:
1 | cppcheck ./ --enable=all --suppress='*:src/uuid/*' --suppress='*:src/crypto/*' --suppress='*:src/xml/*' --suppress='*:src/zip/*' --suppress=variableScope 2>&1 | tee check_result.txt |
valgrind 使用:
1 | valgrind --log-file=./valgrind_report.txt --leak-check=full --show-leak-kinds=all --show-reachable=no --track-origins=yes ./a.out |
四、问题及解决
将在虚拟机编译好的 valgrind 以及对应的库拷贝到板子上运行,提示:
1 | valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory |
按网上解决方法设置环境变量 VALGRIND_LIB:
1 | export VALGRIND_LIB="/usr/local/lib/valgrind" |
再运行,错误依旧。
将源码拷贝到板子上编译,亦是一样。
设置环境变量 VALGRIND_LIB,其值为 .in_place
目录的路径。如下示例:
1 | export VALGRIND_LIB=/home/toll/valgrind-3.17.0/.in_place |
注:后面重启了,VALGRIND_LIB 没有值,但 valgrind 也能正常,原因未知。
李迟 2021.8.28 周六 凌晨