pour déboguer un programme. il est bon de compiler avec l'option -g et aussi tous les warning, en tout cas -pedantic -Wall. Est-ce que vous le faites ?
(ceci dit, dans votre cas, je ne pense pas que cela vous donnera la source de l'erreur ; mais commençons par une base simple).
Ensuite : êtes vous au clair sur la gestion de votre mémoire : est-ce que vous faites des new ? des delete ? (normalement non puisque vous utilisez les smart pointers)
Et pourquoi utiliser des shared_ptr ?? (non présentés en cours pour de bonne raisons) un unique_ptr ne serait pas suffisant ? un « pointeur à la C » ?
Enfin, si vraiment vous ne trouvez pas, valgrind ou ASan (-fsanitize=address) peuvent être de bons outils :
- dans le terminal, lancez
valgrind monprogramme
p.ex.
valgrind test-toupie
Bien sûr il faut avoir installé valgrind (https://valgrind.org/) ou alors aller sur les VM de l'Ecole - compilez en ajoutant l'option -fsanitize=address ; mais il faut avoir installé ASan (https://github.com/google/sanitizers/wiki/AddressSanitizer) ou alors aller sur les VM de l'Ecole
- ne faites pas les 2 en même temps !!