如何使用基本的 c 示例运行 valgrind?
Posted
技术标签:
【中文标题】如何使用基本的 c 示例运行 valgrind?【英文标题】:How to run valgrind with basic c example? 【发布时间】:2015-06-02 03:31:04 【问题描述】:安装:
bzip2 -d valgrind-3.10.1.tar.bz2
tar -xf valgrind-3.10.1.tar
然后:
./configure
make
make install
或者更简单的
sudo apt-get install valgrind
如何在这个简单的程序 example1.c 上运行 valgrind
#include <stdlib.h>
int main()
char *x = malloc(100); /* or, in C++, "char *x = new char[100] */
return 0;
运行:
valgrind --tool=memcheck --leak-check=yes example1
valgrind: example1: command not found
控制台输出:
valgrind: example1: command not found
【问题讨论】:
【参考方案1】:首先,编译你的 C 程序(-g 非常重要;如果在可执行文件中没有调试信息,valgrind 就无法告诉你发生违规的源代码中的行号,也无法告诉你被违反的内存分配的原始行。) :
gcc -g example1.c -o example1
然后在可执行文件上运行 valgrind:
valgrind --tool=memcheck --leak-check=yes ./example1
【讨论】:
【参考方案2】:看起来不错。您只需在可执行文件之前添加./
。没有它,valgrind
找不到它并报告'command not found'
。
valgrind --tool=memcheck --leak-check=yes ./example1
^
【讨论】:
以上是关于如何使用基本的 c 示例运行 valgrind?的主要内容,如果未能解决你的问题,请参考以下文章
如何用 Valgrind 检测使用 LuaJIT FFI 过程中的内存泄漏