117

かなり長くて紛らわしいリンク エラーが表示されます。それを Web サイトのテキスト ボックスに貼り付けて、名前をバラバラにしておけばよかったと思います。

そのようなサービスを知っている人はいますか?

4

5 に答える 5

156

私はそのようなオンラインサービスを作成しました:https://demangler.com

これは gcc c++ シンボル デマングラーです。スタック トレースまたは nm の出力をテキスト ボックスにコピーするだけで、名前がデマングルされた出力が返されます。

@Update: MSVC および Java シンボルもデマングルするようになりました。

于 2012-05-05T23:20:42.217 に答える
108

これは少し遅いかもしれませんが、この質問に基づいて作成しました。私が試した入力で動作し、__cxa_demangle と __unDName を介して g++ と msvc++ をサポートし、Emscripten を介して Javascript にコンパイルされます。これが誰かに役立つことを願っています: c++filtjs

編集:エスケープの問題を修正

于 2012-03-19T02:21:56.030 に答える
31

ほとんどの (すべてではないにしても) C++ コンパイラには、c++filt明らかに探しているものを正確に実行するツールが付属しています。

マウスクリックでそれが必要な場合は... GUIを書いてください;)

于 2010-06-09T14:07:44.233 に答える
10

2 つのコピー アンド ペースト オンライン ソリューションがあります。

GCC と Clang のサポートのみが必要な場合は、おそらく最も用途の広いオンライン C++ コンパイラであるColiruを使用するオプションもあります。

これは、切り取り、貼り付け、クリックほど単純ではありませんが、それほど難しくはありません。上記のように、テンプレート パラメータに問題はないようです。コマンドラインを変更して、次のように実行するだけです。

cat main.cpp | c++filt -t

デマングルするこの例でそれを見てください:

_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)
           ^^^^^^^^^^^
于 2013-07-22T15:45:09.687 に答える
2

参考までに、Borland/MS/何でもマングルされた名前をデマングルするための Ruby gem もあります: unmangler

于 2013-05-04T15:07:30.317 に答える