Мне кажется, что суть проблемы не столько в обнаружении утечек памяти, сколько в знании, когда их проверять. Вы говорите, что у вас много пользовательских действий, но вы не говорите, что последовательности пользовательских действий значимы. Если вы можете генерировать значимые последовательности наугад, я бы поспорил на случайное тестирование. На случайных тестах вы бы измеряли
- Покрытие кода (с
gcov
или valgrind
)
- Использование памяти (с
valgrind
)
- Освещение самих действий пользователя
Под «освещением действий пользователя» я подразумеваю следующие утверждения:
- Для каждой пары действий A и B, если существует значимая последовательность действий, в которой сразу за A следует B, то мы проверили такую последовательность.
Если это не так, то вы можете спросить, какая доля пар A и B это правда.
Если у вас есть циклы ЦП, чтобы позволить себе это, вы, вероятно, также выиграете от запуска valgrind
или другого инструмента проверки памяти перед каждой фиксацией в вашем хранилище исходного кода или во время ночной сборки. .
Автоматизировать!