如何获取脚本是否valgrind发现内存泄漏?

BЈо*_*вић 20 linux bash valgrind

我在bash脚本中运行valgrind,并将valgrind的输出定向到一个文件.像这样 :

valgrind --leak-check=full --show-reachable=yes --xml=yes --xml-file=unit_tests_valgrind.out.xml ./unit_tests_runner
Run Code Online (Sandbox Code Playgroud)

RET_VALUE=$?打算把程序(以上unit_tests_runner)的返回值,而不是从Valgrind的.检查valgrind是否发现内存问题的唯一方法是打开日志.

有没有办法检查脚本是否有内存问题?如果有,怎么样?

dev*_*ull 25

你好像在寻找这个--error-exitcode选择.

由于它默认为0,Valgrind的返回码与进程的返回码相同.将其设置为非零值.

来自Valgrind核心手册:

--error-exitcode=<number> [default: 0]

如果Valgrind在运行中报告任何错误,则指定要返回的备用退出代码.设置为默认值(零)时,Valgrind的返回值将始终是正在模拟的过程的返回值.设置为非零值时,如果Valgrind检测到任何错误,则返回该值.这对于将Valgrind用作自动化测试套件的一部分非常有用,因为只需检查返回代码,就可以轻松检测Valgrind报告错误的测试用例.

  • `--leak-check = full`或`yes`对于`--error-exitcode`表现如预期(取决于你的用例)至关重要.没有它,泄漏错误将被抑制,并且不会在退出代码中报告(valgrind 3.10甚至不会将它们报告为已抑制). (4认同)