如何使用基本的 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 输出的内存泄漏?

C/C++内存检测工具Valgrind

如何用 Valgrind 检测使用 LuaJIT FFI 过程中的内存泄漏

Helgrind (Valgrind) 和 OpenMP (C):避免误报?

Linux 命令(143)—— valgrind 命令

Linux 命令(143)—— valgrind 命令