Существуют ли какие-либо инструменты статического анализа, которые могут помочь обнаружить циклические ссылки shared_ptr <>?
Даже если такой инструмент не может обнаружить сложные случаи, он все равно будет полезен для устранения простых случаев.
Не знаю о существовании таких инструментов, но вот хорошие мысли о проблеме:
Ключ к эффективному управлению временем жизни объекта должен иметь ациклический график владения объектом. Затем вы используете общие указатели при спуске, слабые указатели при движении в сторону, и слабые указатели (или иногда простые указатели) при движении вверх по графику.