C++ filtreli kaynak kodunun bağlantısını bilen var mı? Kodumda kitaplık olarak C++ filtresini aramak istiyorum.C++ filtreli kaynak kodu nerede?
cevap
Linux'ta binutils-dev
paketiyle birlikte gelen /usr/include/demangle.h
paketini kullanabilirsiniz. binutils
'dan libiberty
'a bağlanmanız gerekir.
o binutils parçası:
Verilen farklı derleyiciler her özel bir C++ filt ile gemi eğilimi, farklı cendereye olabilir. Ancak, çoğu sistemde zaten bir yerde mevcut olan bir değiştirme kütüphanesi işlevi olacaktır. Linux kutumda __cxa_demangle() öğesini tanımlayan /usr/include/c++/version/cxxabi.h başlıklarını buldum (bkz. http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html). Yine de geçmişte başka bir işlev kullandım, ama ayrıntıları bulamadım (EDIT: muhtemelen İsmail belgelerinin demo versiyonu). AIX'de bir demangle.h var. pstack ve C++ filt programlarına (yani Linux ve Solaris) ile çoğu sistemde, aşağıdaki çalışması gerekir ...
#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();
}
... çıkış ...
#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()
: DÜZENLEME
__read_nocancel vb. C++ - karışık tanımlayıcılar olduğuna dikkat edin: bunlar uygulama için ayrılan alt çizgi-ve-büyük harf-harf ya da öncü-çift-alt çizgi konvolüsyonları için rezerve edilmiş uygulama kullanılarak sadece dahili C işlev adlarıdır.
X::f()
solaris hakkında nasıl, printstack sadece diziliş yapmaz. Yığını bir boruya yazdırmalı ve okumalı mıyım, msg komutunu mu? –
@dma: Yukarıdaki örnek kod - Linux altında test edildi, ancak Solaris üzerinde çalışmalı. Şerefe. –
LibstdC++ bağlantısını seviyorum. Ama iyi bir vicdan azabı, bunu “popen()” yi kullanarak savunan bir şeye +1 veremem. : P – asveikau
- 1. ConstraintLayout kaynak kodu nerede bulunur?
- 2. Android'in web tarayıcısının kaynak kodu nerede?
- 3. ocaml'deki standart kitaplığın kaynak kodu nerede?
- 4. Numpy'nin yüzdesi için kaynak kodu nerede bulunur?
- 5. glibc'nin setjmp kodu nerede?
- 6. , rayların "komisyon varlıkları: precompile" kaynak kodu nerede yaşıyor?
- 7. mercurial.hg kaynak deposu nerede
- 8. linux du komutu kaynak kodu
- 9. Acemi: çağrı kodu nerede?
- 10. Android uygulamaları için kaynak kodu?
- 11. Javascript, takvim kaynak kodu
- 12. NHibernate 3.0 kaynak deposu nerede?
- 13. $ ile kaynak kodu ile birlikte kullanın Kaynak
- 14. Teradata'da kaynak kodu (film kodu) nasıl gizlenir?
- 15. Java kütüphanesi sınıfları için kaynak kodu
- 16. Java dizileri için kaynak kodunu nerede bulabilirim?
- 17. TypeScript Visual Studio Dil Uzantısı Kaynak Kodu
- 18. Kie-Execution Server için kaynak kodu
- 19. Visual Studio'da projeler arasında C++ kaynak kodu dosyaları nasıl paylaşılır?
- 20. NetBeans Nasıl Yapılır C++ olarak Kod .cpp Dosyaları Kaynak Kodu?
- 21. C içinde Xiaolin Wu'nun çizgi algoritması için kaynak kodu?
- 22. Perl kaynak kodu nasıl belirlenir?
- 23. Asp.Net Mvc 4 Kaynak kodu?
- 24. Alarm Saati uygulama kaynak kodu
- 25. Heroku bastırdıktan sonra, kaynak kodu
- 26. Git> Oozie kaynak kodu
- 27. Google Desktop ile kaynak kodu arama
- 28. C# kodu
- 29. C# kodu
- 30. kaynak iç kaynak gibi ücretsiz kaynak kodu tarayıcı ve editör gibi
linux'umda /usr/include/demangle.h yok ... – Walter