je fais face =E0 au probl=E8me suivant dans une mise au point d'un soft
embarqu=E9 en C++.
Mon moyen de d=E9bug est la sortie de trace sur un port s=E9rie.
Mon embarqu=E9 provoque une violation d'acc=E8s dans le destructeur d'un
template. Or, ce template est massivement utilis=E9 et j'aimerais savoir
quel est le type de celui qui plante.
Concr=E8tement, comment puis-je tracer le nom de la classe CT dans le
code suivant :
template <class cT>
cList<cT>::~cList()
{
}
?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Falk Tannhäuser
Yannick wrote:
Concrètement, comment puis-je tracer le nom de la classe CT dans le code suivant : template <class cT> cList<cT>::~cList() { }
Bien que la Norme ne prévoie rien pour cela, les compilateurs comportent souvent des extensions permettant de récupérer le nom complet d'une fonction (avec type des paramètres, type de retour, classes, namespaces etc). Par example, pour GCC il y a __PRETTY_FUNCTION__ et pour MSVC __FUNCSIG__.
Falk
Yannick wrote:
Concrètement, comment puis-je tracer le nom de la classe CT dans le
code suivant :
template <class cT>
cList<cT>::~cList()
{
}
Bien que la Norme ne prévoie rien pour cela, les compilateurs comportent
souvent des extensions permettant de récupérer le nom complet d'une
fonction (avec type des paramètres, type de retour, classes, namespaces
etc). Par example, pour GCC il y a __PRETTY_FUNCTION__ et pour MSVC
__FUNCSIG__.
Concrètement, comment puis-je tracer le nom de la classe CT dans le code suivant : template <class cT> cList<cT>::~cList() { }
Bien que la Norme ne prévoie rien pour cela, les compilateurs comportent souvent des extensions permettant de récupérer le nom complet d'une fonction (avec type des paramètres, type de retour, classes, namespaces etc). Par example, pour GCC il y a __PRETTY_FUNCTION__ et pour MSVC __FUNCSIG__.
Falk
alex
bonjour,
"Yannick" a écrit dans le message de news:
Bonjour à tous,
Concrètement, comment puis-je tracer le nom de la classe CT dans le code suivant : template <class cT> cList<cT>::~cList() { }
je n'ai pas essayé, mais AMA avec typeinfo().name() tu devrais avoir le nom du type au runtime (donc trace possible)
bonjour,
"Yannick" <yannick.donze@wanadoo.fr> a écrit dans le message de news:
1188202876.411325.97540@22g2000hsm.googlegroups.com...
Bonjour à tous,
Concrètement, comment puis-je tracer le nom de la classe CT dans le
code suivant :
template <class cT>
cList<cT>::~cList()
{
}
je n'ai pas essayé, mais AMA avec typeinfo().name() tu devrais avoir le nom
du type au runtime (donc trace possible)
Concrètement, comment puis-je tracer le nom de la classe CT dans le code suivant : template <class cT> cList<cT>::~cList() { }
je n'ai pas essayé, mais AMA avec typeinfo().name() tu devrais avoir le nom du type au runtime (donc trace possible)
Stephane Wirtel
typeid( object ).name() retourne le type 'mangled', et ce n'est pas facilement lisible.
par contre, gcc offre une fonction permettant de démanglé un nom, je ne me souviens plus du nom de cette fonction, mais je l'ai déjà utilisé et ça fonctionnait très bien.
typeid( object ).name() retourne le type 'mangled', et ce n'est pas
facilement lisible.
par contre, gcc offre une fonction permettant de démanglé un nom, je ne
me souviens plus du nom de cette fonction, mais je l'ai déjà utilisé et
ça fonctionnait très bien.
typeid( object ).name() retourne le type 'mangled', et ce n'est pas facilement lisible.
par contre, gcc offre une fonction permettant de démanglé un nom, je ne me souviens plus du nom de cette fonction, mais je l'ai déjà utilisé et ça fonctionnait très bien.
Falk Tannhäuser
Stephane Wirtel wrote:
typeid( object ).name() retourne le type 'mangled', et ce n'est pas facilement lisible.
par contre, gcc offre une fonction permettant de démanglé un nom, je ne me souviens plus du nom de cette fonction, mais je l'ai déjà utilisé et ça fonctionnait très bien.
Cette fonction s'utilise sur le résultat de typeid(TYP).name()
Falk
Stephane Wirtel wrote:
typeid( object ).name() retourne le type 'mangled', et ce n'est pas
facilement lisible.
par contre, gcc offre une fonction permettant de démanglé un nom, je ne
me souviens plus du nom de cette fonction, mais je l'ai déjà utilisé et
ça fonctionnait très bien.
typeid( object ).name() retourne le type 'mangled', et ce n'est pas facilement lisible.
par contre, gcc offre une fonction permettant de démanglé un nom, je ne me souviens plus du nom de cette fonction, mais je l'ai déjà utilisé et ça fonctionnait très bien.
Cette fonction s'utilise sur le résultat de typeid(TYP).name()
Falk
Gabriel Dos Reis
On Mon, 27 Aug 2007, alex wrote:
| bonjour, | | >"Yannick" a écrit dans le message de news: | > > | >Bonjour à tous, | | >Concrètement, comment puis-je tracer le nom de la classe CT dans le | >code suivant : | > template <class cT> | > cList<cT>::~cList() | > { | > } | | je n'ai pas essayé, mais AMA avec typeinfo().name() tu devrais avoir le nom | du type au runtime (donc trace possible)
Tu as quelque chose avec typeinfo::name, mais de la a dire que c'est le nom du type au runtime, il faut beaucoup plus d'hypotheses.
-- Gaby
On Mon, 27 Aug 2007, alex wrote:
| bonjour,
|
| >"Yannick" <yannick.donze@wanadoo.fr> a écrit dans le message de news:
| > >1188202876.411325.97540@22g2000hsm.googlegroups.com...
| >Bonjour à tous,
|
| >Concrètement, comment puis-je tracer le nom de la classe CT dans le
| >code suivant :
| > template <class cT>
| > cList<cT>::~cList()
| > {
| > }
|
| je n'ai pas essayé, mais AMA avec typeinfo().name() tu devrais avoir le nom
| du type au runtime (donc trace possible)
Tu as quelque chose avec typeinfo::name, mais de la a dire que c'est
le nom du type au runtime, il faut beaucoup plus d'hypotheses.
| bonjour, | | >"Yannick" a écrit dans le message de news: | > > | >Bonjour à tous, | | >Concrètement, comment puis-je tracer le nom de la classe CT dans le | >code suivant : | > template <class cT> | > cList<cT>::~cList() | > { | > } | | je n'ai pas essayé, mais AMA avec typeinfo().name() tu devrais avoir le nom | du type au runtime (donc trace possible)
Tu as quelque chose avec typeinfo::name, mais de la a dire que c'est le nom du type au runtime, il faut beaucoup plus d'hypotheses.
-- Gaby
Gabriel Dos Reis
On Tue, 28 Aug 2007, Stephane Wirtel wrote:
| typeid( object ).name() retourne le type 'mangled', et ce n'est pas | facilement lisible.
Cela depend du compilateur. Certainement, GCC va te retourner quelque chose d'assez hieroglyphique, mais j'ai cru comprendre que le compilateur de Redmond retournait quelque chose de moins criptique -- ce qui n'est pas sans problemes non plus.
-- Gaby
On Tue, 28 Aug 2007, Stephane Wirtel wrote:
| typeid( object ).name() retourne le type 'mangled', et ce n'est pas
| facilement lisible.
Cela depend du compilateur. Certainement, GCC va te retourner quelque
chose d'assez hieroglyphique, mais j'ai cru comprendre que le
compilateur de Redmond retournait quelque chose de moins criptique --
ce qui n'est pas sans problemes non plus.
| typeid( object ).name() retourne le type 'mangled', et ce n'est pas | facilement lisible.
Cela depend du compilateur. Certainement, GCC va te retourner quelque chose d'assez hieroglyphique, mais j'ai cru comprendre que le compilateur de Redmond retournait quelque chose de moins criptique -- ce qui n'est pas sans problemes non plus.
-- Gaby
James Kanze
On Aug 28, 9:59 am, Stephane Wirtel wrote:
typeid( object ).name() retourne le type 'mangled', et ce n'est pas facilement lisible.
C'est une question de qualité de l'implémentation. La plupart des implémentations renvoient quelque chose d'utile : g++ est une exception. N'empêche que pour le débugging, même le nom décoré suffit ; tu doit bien pouvoir y trouver les noms de tes classes.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
On Aug 28, 9:59 am, Stephane Wirtel <stephane.wir...@descasoft.com>
wrote:
typeid( object ).name() retourne le type 'mangled', et ce n'est pas
facilement lisible.
C'est une question de qualité de l'implémentation. La plupart
des implémentations renvoient quelque chose d'utile : g++ est
une exception. N'empêche que pour le débugging, même le nom
décoré suffit ; tu doit bien pouvoir y trouver les noms de tes
classes.
--
James Kanze (GABI Software) email:james.ka...@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
typeid( object ).name() retourne le type 'mangled', et ce n'est pas facilement lisible.
C'est une question de qualité de l'implémentation. La plupart des implémentations renvoient quelque chose d'utile : g++ est une exception. N'empêche que pour le débugging, même le nom décoré suffit ; tu doit bien pouvoir y trouver les noms de tes classes.
-- James Kanze (GABI Software) email: Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Gabriel Dos Reis
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools.