かなり長くて紛らわしいリンクエラーが発生します。Webサイトのテキストボックスに貼り付けて、名前を壊さないようにしておけば、それが気に入ります。
誰かがそのようなサービスを知っていますか?
かなり長くて紛らわしいリンクエラーが発生します。Webサイトのテキストボックスに貼り付けて、名前を壊さないようにしておけば、それが気に入ります。
誰かがそのようなサービスを知っていますか?
回答:
私はそのようなオンラインサービスを作成しました。 https://demangler.com
これはgcc c ++シンボルデマングラです。スタックトレースまたはnmの出力をテキストボックスにコピーするだけで、デマングルされた名前の出力が返されます。
@Update:MSVCシンボルとJavaシンボルもデマングルします。
white-space: normal
responseSection <pre>タグに追加または同様にしてください(そしておそらく行番号を追加してください)。長い1行の出力は現在読むことができません。
これは少し遅いかもしれませんが、この質問に基づいて作成しました。私が試した入力で動作し、Emscriptenを介してJavascriptにコンパイルされた__cxa_demangleと__unDNameを介してg ++とmsvc ++をサポートします。これが誰かを助けることを願っています:c ++ filtjs
編集:エスケープの問題を修正
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
。を参照してください。
ほとんどの(すべてではないにせよ)C ++コンパイラーには、c++filt
明らかに探していることを正確に実行するツールが付属しています。
マウスをクリックしたい場合は、GUIを作成してください;)
objdump -dr ./AClass.o | c++filt | less
(逆アセンブラ)またはnm ./AClass.o | c++filt | less
(オブジェクトファイル内のシンボルのリスト)
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)
^^^^^^^^^^^