Je reçois une erreur de lien assez longue et confuse, et j'adorerais pouvoir la coller dans une zone de texte sur un site Web et que les noms soient démêlés pour moi.
Quelqu'un connaît-il un tel service ?
Je reçois une erreur de lien assez longue et confuse, et j'adorerais pouvoir la coller dans une zone de texte sur un site Web et que les noms soient démêlés pour moi.
Quelqu'un connaît-il un tel service ?
J'ai créé un tel service en ligne : https://demangler.com
Il s'agit d'un démêleur de symboles gcc c++. Il suffit de copier une trace de pile, ou la sortie de nm dans une zone de texte, et il retournera la sortie avec les noms démêlés.
@Mise à jour : Il démêle maintenant les symboles MSVC et Java également.
Celle-ci a fonctionné pour moi, mais pas celle de la réponse la plus populaire : _ZN9cdnalizer11rewriteHTMLINS_6apache8IteratorEcEET_RKSsRKNS_6ConfigES3_S3_St8functionIFS3_RKS3_SB_EES9_IFvSsEE
Votre démêleur ne peut pas démêler les qualificatifs réf pour Itanium. Je regarde _ZNR4test1fEv généré par Clang.
Merci, beau site ! Pourriez-vous ajouter white-space: normal
ou similaire à la balise <pre> de responseSection (et peut-être ajouter des numéros de ligne) ? La sortie longue d'une ligne n'est pas lisible actuellement.
C'est peut-être un peu tard, mais j'en ai créé un, basé sur cette question. Il fonctionne avec les entrées sur lesquelles j'ai essayé, supporte g++ et msvc++ via __cxa_demangle et __unDName, compilé en Javascript via Emscripten. J'espère que cela aidera quelqu'un : c++filtjs
Edit : Correction du problème d'échappement
C'est génial ! Merci ! Vous pourriez peut-être mentionner "démêleur de noms C++ en ligne" quelque part sur la page, afin que les gens puissent vous trouver via Google ?
Est-il possible d'étendre cet outil à d'autres systèmes d'exploitation ? Je suis particulièrement impatient de le porter pour AIX, Solaris et HPUX.
Merci pour l'outil. Très joli et pratique. Une petite remarque est que l'outil ne gère pas correctement les templates. MyClass<int>::doStuff aura <int> caché.
Je veux que cela se fasse avec un minimum d'effort plutôt qu'avec un clic de souris :) De toute façon, je n'en ai pas besoin très souvent.
Mon cas habituel d'utilisation de c++filt est objdump -dr ./AClass.o | c++filt | less
(désassembleur) ou nm ./AClass.o | c++filt | less
(liste des symboles à l'intérieur du fichier objet)
La plupart des compilateurs ne sont pas GCC. Les compilateurs qui ne sont pas GCC ne fournissent pas c++filt. Par induction, la plupart des compilateurs ne fournissent pas c++filt.
Il existe deux solutions de copier-coller en ligne :
Si vous n'avez besoin que du support pour GCC et Clang, vous avez aussi la possibilité d'utiliser Coliru qui est probablement le plus polyvalent compilateur C++ en ligne .
Ce n'est pas tout à fait aussi simple que de couper, coller et cliquer, mais ce n'est pas beaucoup plus difficile, et il semble qu'il n'y ait pas de problèmes avec les paramètres des modèles, comme indiqué ci-dessus. Vous devez simplement modifier la ligne de commande pour exécuter quelque chose comme ceci :
cat main.cpp | c++filt -t
Voyez-le en direct avec cet exemple qui démangent :
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
à :
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Au fait, quel est votre compilateur ? Peut-être pouvez-vous simplement utiliser un outil prêt à l'emploi livré avec lui.
4 votes
J'ai trouvé "undname.exe" et il a fait le travail pour VC++.
3 votes
Collez votre nom ici, et si c'est un nom VC2005, je le démêlerai.
0 votes
Aucune exigence en ligne : stackoverflow.com/questions/4468770/