2011-07-14 2 views
0

Je travaille actuellement sur un programme (en C++, en utilisant Code :: Blocks) qui utilise beaucoup de nombres aléatoires et prend un peu de temps pour démarrer; la plupart du temps, cela fonctionne bien, mais de temps en temps, il effectue une opération illégale et doit fermer. Étant donné les nombres aléatoires partout, et le fait qu'il faut actuellement ~ 3-5 minutes pour que le programme atteigne le stade auquel les erreurs se produisent (ce délai est normal/acceptable), reproduire les problèmes de manière fiable et pratique est extrêmement Il est difficile de signaler toutes les autres lignes de code à cout pour effectuer le suivi manuel des données, mais cela n'est pas toujours utile, car même si je sais quand le programme s'arrête, il m'arrive de ne pas Je ne sais pas pourquoi.Comment déterminer facilement où et pourquoi un programme s'est écrasé?

Y a-t-il un moyen pour moi de voir quelle était la dernière opération du programme avant qu'il ne s'écrase, et pour moi de voir pourquoi cette opération a provoqué un crash? Quelque chose dans CodeBlocks serait le mieux, mais quelque chose de tiers fonctionne aussi. Il doit également être quelque chose que je peux utiliser chaque fois que je teste le programme, car je ne sais jamais quand un accident va se produire.

Répondre

0

C'est ce à quoi servent les débogueurs. Construisez le système avec des symboles de débogage complets, configurez le système pour obtenir un rapport d'erreur complet (dans Linux un fichier core), puis lancez le débogueur avec le fichier core (sinon lancez le programme entier dans le débogueur, mais cela peut prendre Un débogueur devrait être capable de vous donner l'état du programme lorsque l'instruction illégale s'est produite et vous obtiendrez un aperçu de l'état que le débogueur est en cours d'exécution dans un débogueur est généralement beaucoup plus lent qu'exécuter à l'extérieur de celui-ci

À partir de là, soit vous comprenez ce qui ne va pas, soit vous pouvez faire quelques testcases plus petites qui pourraient déclencher l'erreur

Déboguer les problèmes qui ne peuvent pas être reproduits systématiquement est une douleur, bonne chance!

Questions connexes