Existe um nome online Demangler para C ++? [fechado
Pergunta
Estou recebendo um erro de link bastante longo e confuso e adoraria se eu pudesse colá-lo em alguma caixa de texto em algum site e ter os nomes não-mexidos para mim.
Alguém conhece esse serviço?
Solução
Eu criei uma servidice online: http://demangler.com
Este é um símbolo GCC C ++ Demangler. Você apenas copia um rastreamento de pilha ou a saída de NM em uma caixa de texto e ele retornará a saída com os nomes desmembrados.
@Update: agora também desmanga símbolos MSVC e Java.
Outras dicas
Isso pode ser um pouco tarde, mas eu criei um, com base nessa pergunta. Funciona com as entradas que experimentei, suporta G ++ e MSVC ++ via __cxa_demangle e __undName, compilados para JavaScript via EMSCRIPTEN. Espero que isso ajude alguém: c ++ filtjs
Editar: Problema de fuga fixa
A maioria (se não todos) compiladores C ++ vêm com c++filt
ferramenta que faz com precisão o que você aparentemente procura.
Se você quiser no mouse clique ... bem, escreva uma GUI para ele;)
Existem duas soluções on-line de cópia e colas:
- demangler.com, que suporta símbolos GCC, Visual Studio ou Java
- c ++ filtjs, que suporta GCC e Visual Studio, mas tem problemas com parâmetros de modelo
Se você precisar apenas de suporte para GCC e CLANG, você também terá a opção de usar Coliru, que é provavelmente o mais versátil Compilador C ++ online.
Isso não é tão simples quanto cortar, colar e clicar - mas não muito mais difícil - e parece que não há problemas com os parâmetros de modelo, como foi observado acima. Você só precisa modificar a linha de comando para executar algo assim:
cat main.cpp | c++filt -t
Veja ao vivo com este exemplo que desmangados:
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
para:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^
Para sua informação, há também uma jóia de rubi para desmanger Borland/MS/quaisquer nomes mutilados: UNLANGLER