问题
完成代码编写之后,打算在服务器使用valgrind测一下是否存在内存泄露。结果刚一运行就结束了,记得应该特别慢才对的啊。赶紧打开保存的log看一下,发现有如下的错误:
valgrind: m_translate.c:1682 (vgPlain_translate): Assertion 'tres.status == VexTransOK' failed
把这个问题搜了一下,发现也有人遇到过这个问题,但是还没有答案解释具体原因和解决方法。
查看了一下使用的valgrind版本:
$ valgrind --version
valgrind-3.10.1
想了一下是不是版本太低导致的问题。打算升级一下版本。
解决
下载新版本:
$wget https://sourceware.org/pub/valgrind/valgrind-3.15.0.tar.bz2
解压
$tar -jxvf valgrind-3.15.0.tar.bz2
安装
$cd valgrind-3.15.0
$./configure --prefix=/home/your_name/valgrind-3.15
$make -j32
$make install
安装完毕之后查看一下
$ls /home/your_name/valgrind-3.15
bin include lib libexec share
配置环境变量
$vi ~/.bashrc
在~/.bashrc最后添加下面两行
export PATH="/home/your_name/valgrind-3.15/bin:$PATH"
export VALGRIND_LIB="/home/your_name/valgrind-3.15/lib/valgrind/"
保存之后
$source ~/.bashrc
检查一下是否配置有效
$valgrind --version
valgrind-3.15.0
$which valgrind
/home/your_name/valgrind-3.15/bin/valgrind
说明已经安装完成了
测试
$valgrind --tool=memcheck --leak-check=full --trace-children=yes --log-file=your_log.txt ./your_exe
可以正常运行