問題タブ [demangler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
362 参照

c++ - STL 対応の c++filt を探しています

私の開発環境では、GNU C++ 3.4.6 を使用してコード ベースをコンパイルしています。コードは開発中であり、残念ながら時々クラッシュします。デマングラーを介してトレースバックを実行できるのは素晴らしいことです。私は c++filt 3.4 を使用しています。問題は、関数に多数の STL パラメータがある場合に発生します。検討

この関数がトレースバックにある場合、私のプラットフォームでの破損した出力は次のようになります。

c++filt は親切にデマングルします

これは、テンプレートの使用時に発生するコンパイラ エラーと同じ問題です。ただし、STL はかなり規則的で認識可能なテンプレートのパッケージです。だから私が望んでいるのは、誰かが元の関数シグネチャに近いものをダンプする c++filt の拡張バージョンを作成したことです。ヒントはありますか?

0 投票する
5 に答える
53544 参照

c++ - C++ 用のオンラインの名前デマングラーはありますか?

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

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

0 投票する
3 に答える
522 参照

windows - Windows デマングリング ライブラリ

Windows 実行可能シンボル名のデマングリングを行うためのオープン ソース ライブラリを探しています。そのようなものは存在しますか、それとも Microsoft ライブラリを使用する必要がありますか?

0 投票する
4 に答える
14127 参照

c++ - C++シンボル名をマングルするLinuxユーティリティは何ですか?

シンボルをc++filtデマングルするコマンドがありますが、反対のことを行ってシンボル名をマングルするツールは何ですか?

dlsym()これは、マングルされた C++ 関数名を呼び出したい場合に便利です。新しいコンパイラ バージョンや新しいコンパイラ ブランドが使用されているため、または現在複数のプラットフォーム用にコンパイルされているために、時間の経過とともに変更される可能性があるため、コード内の名前マングリングをハードコーディングしたくありません。

コードがコンパイラに依存しないように、実行時に C++ 関数を表す文字列をプログラムで取得する方法はありますか? これを行う 1 つの方法は、コンパイル時に、使用されているコンパイラの名前マングリングを実行し、適切なマングルされた C++ シンボル名dlsym()を使用する文字列に挿入するユーティリティを呼び出すことです。

これは、このサイトで見つけた解決策に最も近いものです。これは、固定の C スタイル名を使用して、必要なライブラリで定義されている C++ シンボルを間接的に使用することによって達成されますが、dlsym()そのライブラリを制御できない場合これはオプションではありません。

0 投票する
1 に答える
1504 参照

c++ - c++ : プログラムでシンボルをコード行番号に変換する

私は下で開発していますLinux/gcc

現在、以下を使用して、スローされたカスタム例外のスタック トレースを取得しています。Demangled関数名 とは期待どおりですが、出力文字列のフォーマットを完全に制御するline numbersために を使用することは避けたいと思います。addr2line

注 :を使用-fして、スタック トレースで実行中の関数名-Cを表示し、デマングルして表示します。

Q:プログラムによる解決策を教えてくれる人はいますか? (そして、可能であれば、それをうまく機能させる方法についてアドバイスをくださいMinGW/gcc)。

NB: または、単にgdb何らかの方法で使用することで、よりカスタマイズされた出力を取得するのに役立つ可能性がありますか?

助けてくれてありがとう。

編集:Windowsの部分のように見えますが、そのように実行できます:https://stackoverflow.com/a/6207030/1715716

編集:上記は Microsoft Visual のみのソリューションを指しているため、最終的には役に立ちません。

0 投票する
1 に答える
2364 参照

c++ - C++ シンボルを手でデマングルすることは可能ですか?

次のようなエラーが発生します。

についても同様です__ZN2nm7ComplexIfEC1ERKNS_10RubyObjectE

残念ながら、c++filtこれらをデマングルしたくないようです。それらをc++filtjs オンライン インターフェイスに入力しようとすると、「マングルされた C++ シンボルではありません」というメッセージが表示されます。

c++filtjsこの例では_ZN9wikipedia7article8wikilinkC1ERKSsを表しているので、エラー メッセージに少し困惑していますwikipedia::article::wikilink::wikilink(std::string const&)。その中にはいくつかのパターンがありますZN#、for 、および7forは、コンストラクターへの参照渡しのようなものだと推測しています。8::C1ERK

class Rationalなどの のコンストラクターの 1 つが欠落していると不平を言っていると思いRational::Rational(RubyObject const&)ます。Rationalただし、 はテンプレートであるため、どのバージョンが欠落しているかを理解するのに役立ちます。

しかし、ここで問題になるのは、どうすれば手でデマングルできるかということです。=)

0 投票する
0 に答える
168 参照

c++ - デマングリングと「__gnu_gxx 名前空間へのあいまいな参照」という結果になります

実行時に型情報を出力する必要がある場合は、常にstd::type_info::name()結果にデマングリングを適用します。これは、以下を使用する GCC の実装ですabi::__cxa_demangle()

今日はto_string、タイプリストの内容を印刷できるテンプレートを書いていました。したがって、std::string連結を避けるために、文字列ストリームを使用しましたstd::ostringstream

_to_stringoperator<<タイプリストの内容を再帰的にストリームに出力するために実装するクラス テンプレートです。(関係のないメタプログラミング コードで記事が肥大化しないように、これは含めません) .

これはdemangling なしで完全に機能します。デマングリングを実装するためにインクルード<cxxabi>すると、コンパイラは にambiguous reference to __gnu_gxx namespaceエラーを表示しsstream.hます。

その理由は何ですか?

0 投票する
2 に答える
2874 参照

c++ - c++filt は typeid 名をデマングルしません

type_info::name を出力するために、GCC C++コンパイラでコードを実行しています。

しかし、次の結果が得られます。

そしてデマングルでは、

以前と同じ出力が得られます。他の解決策はありますか?