c++ - 代码块上的 Valgrind (linux)

标签 c++ c linux memory-leaks codeblocks

我已经在小程序中使用 Valgrind 来检查 内存泄漏 并且它的工作很好。

现在我有一个包含许多类和 .cpp.h 文件的大程序,我正在尝试使用 Valgrind 来检查内存泄漏 因为我使用了很多指针、内存等。

我正在使用 linuxcodeblocks 16.01 以及 gcc 并且我试图直接运行 Valgrind codeblocks 但我收到以下错误:

 --------------- Application output --------------
valgrind: /myPathToTheProject/ValgrindOut.xml: No such file or directory

如果我用一个只有 .cpp 文件和 main 的小项目进行测试,它运行良好并且 Valgrind 生成 ValgrindOut.xml .在这个大项目中,我总是遇到这个错误。有人知道出了什么问题吗?或其他方法或工具来测试内存泄漏

编辑 - 运行 Valgrind 后的泄漏摘要

Leak summary:

definitely lost: 673 bytes in 6 blocks.
   indirectly lost: 89,128 bytes in 68 blocks.
     possibly lost: 232 bytes in 2 blocks.
   still reachable: 80,944 bytes in 6 blocks.
        suppressed: 0 bytes in 0 blocks.

最佳答案

我不确定如何直接从代码块运行 valgrind。我建议您使用代码块构建项目。执行时,按照以下命令使用 valgrind。

命令

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --log-file=leak.txt ./myexecutable <my command line arguments>

例子

valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --log-file=leak.txt ./myexecutable -i 192.168.1.10 -p 5000

这样就可以生成valgrind的输出文件,即包含内存泄漏等的leak.txt

关于c++ - 代码块上的 Valgrind (linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45435290/

相关文章:

c - 如何 "quickly"获取标准结构信息?

c - Sublime Text 2 : Having trouble making an OpenGL sublime-build

c - 读取命名管道导致无限循环

linux - 使用 awk/sed/cut/grep 从文本文件中提取冒号分隔的字段/值

c++ - 在 MySQL 中运行 HTTP 服务器以接收来自客户端的数据

c++ - 枚举整数类型转换 : operator or function

c++ - 当其他线程处于事件状态并且具有 try-catch 时,无法在主线程中捕获异常

c++ - 有没有办法关闭 C++ 和 Rust 编译的循环优化?

无法在 macOS Sierra 上将程序集文件 (.s) 与 GCC 链接

c++ - 定时器挂起主线程