valgrind使用
Valgrind 是一个用于内存调试、内存泄漏检测和性能分析的工具,主要用于开发过程中帮助程序员找到程序中的内存错误。它可以在多个方面检查程序的行为,包括但不限于:
检测内存泄漏
检查对未初始化内存的使用
检查越界访问
检查非法的堆块分配和释放操作
监控线程间的竞争条件
命令
具体使用方法如下:
valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all --track-origins=yes --log-file=<file> --error-exitcode=<number> --verbose --suppressions=<file> python3 ./program_name
每个选项可以自己选择是否加,最简命令:
valgrind --tool=memcheck ./program_name
valgrind --tool=memcheck python3 ./program_name
如果不加python3则不会以python形式执行代码,而是通过shell解释,可能会出现一些其他的报错。
参数选择:
- –tool=memcheck 用来指定你想要使用的工具,默认是 memcheck,其余情况后续补充。
- –leak-check=full:提供更详细的内存泄漏信息。
- –show-leak-kinds=all:显示所有类型的泄漏(definite, indirect, possible, reachable)。
- –track-origins=yes:尝试追踪未初始化值的来源,这会增加运行时间。
- –log-file=:将输出重定向到文件而不是标准错误输出,file自己设定。
- –error-exitcode=:如果发现错误,则退出时返回给定的状态码,number自己设定。
- -v 或 --verbose:启用详细模式,提供更多调试信息。
- –suppressions=:使用指定的抑制文件来忽略某些已知无害的警告,file自己设定。
注:
1.program_name请自行替换为自己的文件名,如program.py
2.本篇以查看python代码的内存泄漏为例,不是说valgrind只能在python环境下执行
祝大家学的开心!