問題タブ [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.
c++ - gcc 名マングリングの「デストラクタ グループ」シンボルとは
https://stackoverflow.com/a/6614369/1091587には、「gcc3」タイプの名前マングリングを使用してコンパイルされたプログラムのシンボル テーブルを読み取るときに表示されるデストラクタ タイプ (D0、D1、D2) の簡単な概要があります。対応するコンストラクター C0/C1/C2 もあります。g++-4.7 (おそらくそれ以前) では、新しい ctor/dtor ペア、つまり C5/D5 が表示されますが、デバッグ シンボルとしてのみです。
デマングラーのソースは D5 オブジェクトを「gnu_v3_object_dtor_group」と呼んでいますが、dtor グループとは正確には何ですか? clang++-3.3 はそれを発行しません。http://gcc.gnu.org/ml/gcc-patches/2011-11/msg00383.html は、 gcc の新しいトランザクション メモリ機能と関係がある可能性があることを示唆しています。
profiling - perf を使用した D プログラムのプロファイリング時の D シンボルのデマングリング
Linux で素晴らしいツール perf を発見しました。
これでDプログラムをプロファイリングしましたが、呼び出すと
シンボルは解体されません。
私は知ってddemangle
いますが、これはバッチ処理モードでのみ機能します。いつでも出力をファイルにダンプして表示することができました。しかし、perf データベース ファイルにシンボルを追加する前に、シンボルをデマングルする解決策を誰かが見つけてくれれば幸いです。
g++ - gprofがデマングルできるようにcmakeを使用してg ++のフラグを設定する方法は?
CMakeLists.txt で GNU g++ のコンパイラとリンカーの gprof フラグを設定するにはどうすればよいですか?
私の現在のアプローチは、
gprof が C++ 関数をデマングルすることを許可しません。何か案は?(私は C++11 を使用しています)
c++ - std::string を std::string としてデマングルする方法
私は、動的キャストを使用して何千行も記述したり、クラス名を返す仮想関数を実装したりすることなく、デバッグを支援するために、すでにいくつかのデマングリング コードを使用してきました。
このコードの背後にある考え方は単純で、実際に使用しているクラスを出力するというものです。Ubuntu 14.04 に切り替えた後、clang と c++-11/c++-14 標準を使用してコンパイルできなくなったため、libstdc++ の代わりに libc++ を使用するように切り替えました。
libc++ に切り替えた後、「std::string」をデマングルすると、「std::string」が出力されなくなりましたが、代わりに次のように出力されることに気付きました。
もちろん、std::string は std::basic_string の typedef であるため、これは正しいことです。libc++ と libstdc++ の両方で見ることができる限り、これは typedef を使用して同じ方法で定義されています。したがって、libc ++に切り替えることでこのデマングリングが変更された理由がよくわかりません。
これが異なる理由と、CLASS が「std::string」の場合は「std::string」、CLASS が「myTemplate」の場合は「myTemplate」を取得する方法を知っている人はいますか?
事前にTnx!
JVAペン
c++ - Boost ファイルシステム ライブラリの未解決の外部シンボル (エラー LNK2019)
リンクエラー LNK2019: unresolved external symbolをデバッグしようとしていました。そうするために、そのシンボルを含むはずのライブラリ内のすべてのシンボルをリストしようとしました。ただし、次の 2 つの質問があります。
1) まず、デマングルされたシンボルを次の形式で読み取る方法について混乱しています。
具体的には、Xの意味とその重要性について考えていました。また、SYMBOL_NAMEとXを入れ替えるとリンク エラーが発生する可能性はありますか?
たとえば、ライブラリ内のシンボルの (デマングルされた) 定義は次のとおりです。
リンクエラーは次のとおりです。
未解決のシンボルと既存のシンボルのSYMBOL_NAMEとXが入れ替わっていることがわかります。
2) 上記のエラーを解決する方法について何か考えがある人はいますか?
どんな助けでも大歓迎です!
swift - Linux の libswiftDemangle.so
Mac マシンで Swift をコンパイルすると、動的ライブラリlibswiftDemangle.dylib
が作成されます。Linux マシン上で作成された動的ライブラリも必要ですが、ソース コードのコンパイル後に動的ライブラリが作成されません。
のファイルCMakeLists.txt
にlib/SwiftDemangle/CMakeLists.txt
は次が含まれています。
ただし、ライブラリは作成されません。
このコマンドを使用し./swift/utils/build-script -R -c --build-subdir build --install-prefix /mnt/servers/swift/install -j4
てプロジェクトをビルドし、最終的に実行cmake
しninja
てプロジェクトをビルドします。
何か案は?
gdb - デバッグ モードでプログラムがクラッシュする: 「デマングルできません」?
Eclipse CDT でコードがデバッグ モードで実行されません。次のメッセージが表示されます。
/build/gdb-HnfxP_/gdb-7.10/gdb/cp-support.c:1595: デマングラー警告: デマングルできません '_ZdvI7Vector3dESt6vectorIDTdvcvT__EcvT0__EESaIS4_EERKS1_IS2_SaIS2_EERKS1_IS3_SaIS3_EE'limit (デマングラーはシグナル 11 で失敗しました)次回GDBを実行する前に。
https://d.fuqu.jp/c++filtjs/を使用して、マングル記号が対応していることがわかりました
これによりエラーが発生するのはなぜですか?どうすれば修正できますか?