boost répertoire itérateur

J'ai ce morceau de code Boost qui parcourt les fichiers dans un répertoire:

void someFuncToIterateFiles() {

    if( exists( directory ) )
    {
       directory_iterator end ;

       for( directory_iterator iter(directory) ; iter != end ; ++iter ) {
         if ( !is_directory( *iter ) )
         {
             //this is a file 
             cout << iter->path; 

             //rest of the code
         }
       }
    }
}

J'ai trouvé que, parfois, lors de la lecture d'un répertoire qui existe et est sur le point de commencer à parcourir par le biais de fichiers, le programme s'interrompt et il n'y a pas d'erreur ou de faute de segmentation. Le reste du code bit n'est pas exécutée, et la fonction de retour à l'appelant, Ce qui est très étrange que je n'ai pas rencontré quelque chose comme ça avant. Aucune exception n'est levée, à moins que ce besoin de nous pour utiliser explicitement un try-catch gestionnaire d'exception.

Quelqu'un a connu cela avec coup de pouce? Je ne debug mais seulement d'utiliser le cout des déclarations que certains de mes bibliothèques de dépendances sont compilé en mode release.

  • Essayez de compiler votre code ici sans optimisation du compilateur. Vous serez en mesure de voir beaucoup plus au cours d'une session de débogage de cette façon, vous serez en mesure de déboguer le code boost
  • Alternativement, à l'aide de la volatile mot-clé indique au compilateur de ne pas optimiser une variable.
  • la version de boost::filesystem utilisez-vous?
InformationsquelleAutor dr_rk | 2012-05-09