誰かがC++ filtソースコードのリンクを知っていますか?私は、ライブラリとして自分のコードでcall C++ filtが必要です。C++ filtのソースコードはどこですか?
答えて
/usr/include/demangle.h
には、binutils-dev
パッケージが付属しています。 binutils
からlibiberty
にリンクする必要があります。
それはbinutilsのの一部です:
考えると異なるコンパイラは、それぞれが独自のC++ FILTに同梱する傾向がある、異なっマングルすることができます。しかし、ほとんどのシステムではすでにどこかで利用可能なデアンギャングライブラリ機能があります。私のLinuxのボックスでは、__cxa_demangle()を定義している/usr/include/c++/version/cxxabi.hヘッダが見つかりました(http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html参照)。私は過去にいくつかの他の機能を使っていたと思っていましたが、詳細を見つけることはできませんでした(編集:おそらくデマンバージョンİsmailのドキュメント)。 AIXにはdemangle.hがあります。
EDIT:pstackのとC++ FILTプログラムとほとんどのシステム(つまり、LinuxおよびSolaris)上で、次のように動作するはずです...
#include <cstdio>
#include <iostream>
#include <sstream>
struct X
{
void f()
{
std::ostringstream cmd;
cmd << "pstack " << getpid() << " | c++filt";
if (FILE* f = popen(cmd.str().c_str(), "r"))
{
char buffer[1024];
int n;
while ((n = fread(buffer, 1, sizeof buffer, f)) > 0)
std::cout.write(buffer, n);
}
else
std::cerr << "popen() failed\n";
}
};
int main()
{
X x;
x.f();
}
...出力...
#0 0x003539be in __read_nocancel() from /lib/tls/i686/libc.so.6
#1 0x002ff590 in _IO_file_read_internal() from /lib/tls/i686/libc.so.6
#2 0x002fe522 in _IO_new_file_underflow() from /lib/tls/i686/libc.so.6
#3 0x00300371 in __underflow() from /lib/tls/i686/libc.so.6
#4 0x0030079d in _IO_default_xsgetn_internal() from /lib/tls/i686/libc.so.6
#5 0x00300733 in _IO_sgetn_internal() from /lib/tls/i686/libc.so.6
#6 0x002f666c in fread() from /lib/tls/i686/libc.so.6
#7 0x08048c36 in X::f()
#8 0x08048ac0 in main()
__read_nocancelなどは、C++のコード化された識別子ではないことに注意してください。実装されているのは、実装のために予約されているアンダースコアと大文字または先行ダブルアンダースコアのコンビネーションを使用する内部のC関数名です。
X::f()
マングルされた識別子であり、が復号化されてきました。
ソラリスについては、プリントスタックだけがデマングルしません。私はパイプにスタックを印刷し、msgを解読する必要がありますか? –
@dma:上記のサンプルコード - Linuxでテストされていますが、Solarisで動作する必要があります。乾杯。 –
私はlibstdC++リンクが好きです。しかし、私は良心的にこのように 'popen() 'を使うことを支持するものに+1を与えることはできません。 :P – asveikau
- 1. C++ filtのデマングルのtypeid名
- 2. llvm-covレポートではどのようにC++ filtを使用しますか?
- 3. Firefoxのソースコードはどこですか?
- 4. IEnumeratorのソースコードはどこですか?
- 5. Android ConstraintLayoutソースコードはどこですか?
- 6. ソースコードはどこでGNU C++標準ライブラリにダウンロードできますか?
- 7. インテルのBIOSソースコードはどこから入手できますか?
- 8. org.w3c.dom.Nodeのソースコードはどこから入手できますか?
- 9. c/C++の混在ソースコードをコンパイルすることはできますか?
- 10. Android 1.5(カップケーキ)のソースコードはどこで入手できますか?
- 11. WTP(Webツールプラットフォーム)のソースコードはどこで入手できますか
- 12. QBalloonTipクラスのソースコードはどこで入手できますか
- 13. pythonのチェーンのソースコードはどこですか?
- 14. Firefoxのソースコードのメインイベントループはどこですか?
- 15. libcurlのcurl_easy_perform()のソースコードはどこですか?
- 16. Tensorflowのadadeltaのソースコードはどこですか?
- 17. gnu lib math(libm)のソースコードはどこですか
- 18. MVC 3ソースコードのLabelFor拡張メソッドはどこですか?
- 19. Reactjs material-uiデモのソースコードはどこですか?
- 20. ここでは、Cのソースコードを見つける
- 21. どこでソースコードを読むことができますか?
- 22. EntityFramework.sqlserverソースコードをダウンロードする場所はどこですか?
- 23. Node.jsのJavaScriptメソッドのソースコード(hasOwnPropertyなど)はどこで確認できますか?
- 24. セレンIDEコマンドのソースコードはどこですか?StoreとstoreEvalはありますか?
- 25. どこでiLOCOi2モバイルアプリのソースコードをダウンロードできますか?
- 26. どこでアプリケーションのソースコードを入手できますか?
- 27. C/C++ソースコードとライブラリをJavaでどのように使用できますか?
- 28. .NET CoreのSystem.Stringのソースコードはどこにありますか?
- 29. .NETのMonitorクラスのソースコードはどこにありますか?
- 30. Androidのウェブブラウザのソースコードはどこにありますか?
私のlinuxに/usr/include/demangle.hはありません... – Walter