Мы используем valgrind
как часть нашего процесса CI. Если возникают проблемы с памятью, valgrind
должен вернуть ненулевой код, и об этом сообщается. Вот как мы это запустили:
valgrind --error-exitcode=1 --tool=memcheck --leak-check=full \
--errors-for-leak-kinds=definite --show-leak-kinds=definite \
--track-origins=yes ./some_cgo_application
(...)
==25182== HEAP SUMMARY:
==25182== in use at exit: 2,416,970 bytes in 34,296 blocks
==25182== total heap usage: 83,979 allocs, 49,684 frees, 5,168,335 bytes allocated
==25182==
==25182== LEAK SUMMARY:
==25182== definitely lost: 0 bytes in 0 blocks
==25182== indirectly lost: 0 bytes in 0 blocks
==25182== possibly lost: 3,024 bytes in 7 blocks
==25182== still reachable: 2,413,946 bytes in 34,289 blocks
==25182== of which reachable via heuristic:
==25182== newarray : 520 bytes in 1 blocks
==25182== suppressed: 0 bytes in 0 blocks
==25182== Reachable blocks (those to which a pointer was found) are not shown.
==25182== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==25182==
==25182== For counts of detected and suppressed errors, rerun with: -v
==25182== ERROR SUMMARY: 20 errors from 5 contexts (suppressed: 0 from 0)
В настоящее время нас интересует только память, definitly lost
. Если никакие блоки не будут потеряны, код выхода valgrind
ожидается равным нулю. Однако он возвращает 1
несмотря на опции --errors-for-leak-kinds=definite --show-leak-kinds=definite
.
echo $?
1
Есть ли у вас другие варианты, которые помогут достичь желаемого результата?