message d'avertissement RTTI symbole introuvable lors de l'utilisation de boost::iostreams
J'utilise Boost::iostreams d'écrire simultanément sur ma console et un fichier. Lorsque j'utilise eclipse pour déboguer(avec gdb, bien sûr), je reçois un avertissement qui dit RTTI symbole pas trouvé pour l'une des classes que je suis à l'aide de Boost::iostreams.
Voici le code minimum pour reproduire le problème.
#ifndef BOOST_IO_STREAM_H_
#define BOOST_IO_STREAM_H_
#include <fstream>
#include <boost/iostreams/tee.hpp>
#include <boost/iostreams/stream.hpp>
using boost::iostreams::tee_device;
using boost::iostreams::stream;
typedef tee_device<std::ostream, std::ofstream> TeeDevice;
typedef stream<TeeDevice> TeeStream;
#endif /* BOOST_IO_STREAM_H_ */
int
main()
{
/* A config file to output experiment details */
std::string self_filename = "./experimentconfig.txt";
std::ofstream fconfig(self_filename.c_str());
TeeDevice my_tee(std::cout, fconfig);
TeeStream cool_cout(my_tee);
cool_cout << "Output to file and console during experiment run" << std::endl;
return 0;
}
Quand je traverse la TeeStream cool_cout(my_tee);
ligne pendant le débogage, je reçois le ci-dessous avertissements:
warning: RTTI symbol not found for class 'boost::iostreams::stream<boost::iostreams::tee_device<std::ostream, std::basic_ofstream<char, std::char_traits<char> > >, std::char_traits<char>, std::allocator<char> >'
warning: RTTI symbol not found for class 'boost::iostreams::stream_buffer<boost::iostreams::tee_device<std::ostream, std::basic_ofstream<char, std::char_traits<char> > >, std::char_traits<char>, std::allocator<char>, boost::iostreams::output>'
Les mises en garde répétées chaque fois que l'objet cool_cout est rencontré. Comment puis-je résoudre ce problème? Bien sûr, les programmes qui utilisent ce code fonctionne et je n'ai pas de problèmes avec ça. Les avertissements ne sont pas censés être ignoré et il ya une certaine connaissance sur les RTTI symboles qui doit être acquis. (Je ne peut pas compiler avec -f nortti ensuite le fichier exécutable se plaint que rtti devrait certainement être activé pour utiliser iostreams)
OriginalL'auteur hAcKnRoCk | 2012-10-20
Vous devez vous connecter pour publier un commentaire.
Avertissements que vous devez être préoccupé par sont du compilateur, qui est réellement ce qui crée votre programme. Les utilisateurs finaux ne doit pas être l'aide d'un débogueur, et il n'a pas d'impact sur votre binaire lui-même.
Tout gdb trouve parfois des questions, beaucoup de mises en garde sont parce que gdb consomme symboles de débogage, et le consommateur (gdb) a des bugs et defencencies . Souvent ils juste de réduire la fonctionnalité de gdb.
Dans ce cas, il y a moins d'informations sur cette classe disponible à l'intérieur du débogueur. Il rend le débogage plus difficile, mais ne blesse pas l'application elle-même.
Vous avez plusieurs choix pour quoi faire à propos de cette erreur.
OriginalL'auteur Brian Lloyd