Oldukça uzun ve kafa karıştırıcı bir bağlantı hatası alıyorum ve bunu bir web sitesinde bir metin kutusuna yapıştırıp isimleri benim için çözebilirsem çok sevinirim.
Böyle bir hizmeti bilen var mı?
Oldukça uzun ve kafa karıştırıcı bir bağlantı hatası alıyorum ve bunu bir web sitesinde bir metin kutusuna yapıştırıp isimleri benim için çözebilirsem çok sevinirim.
Böyle bir hizmeti bilen var mı?
Yanıtlar:
Böyle bir çevrimiçi hizmet oluşturdum: https://demangler.com
Bu bir gcc c ++ sembolü çözücüdür. Sadece bir yığın izini veya nm çıktısını bir metin kutusuna kopyalarsınız ve çıktıyı adlar çözülmüş olarak döndürür.
@Update: Artık MSVC ve Java sembollerini de ayrıştırıyor.
white-space: normal
responseSection <pre> etiketine (ve belki satır numaralarını ekleyebilir) ekleyebilir veya benzer olabilir misiniz ? Uzun tek satırlık çıktı şu anda okunamıyor.
Bu biraz geç olabilir, ancak bu soruya dayanarak bir tane oluşturdum. Denediğim girdilerle çalışıyor, __cxa_demangle ve __unDName aracılığıyla g ++ ve msvc ++ 'yı destekliyor, Emscripten aracılığıyla Javascript'e derlenmiş. Umarım bu birisine yardımcı olur: c ++ filtjs
Düzenleme: Çıkış sorunu düzeltildi
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
.
C ++ derleyicilerinin çoğu (hepsi değilse de) c++filt
görünüşte aradığınız şeyi tam olarak yapan bir araçla birlikte gelir .
Fare tıklamasıyla istiyorsanız ... bunun için bir GUI yazın;)
objdump -dr ./AClass.o | c++filt | less
(disassembler) veya nm ./AClass.o | c++filt | less
(nesne dosyasının içindeki sembollerin listesi)
Kopyala ve yapıştır iki çevrimiçi çözüm vardır:
Yalnızca GCC ve Clang için desteğe ihtiyacınız varsa , muhtemelen en çok yönlü çevrimiçi C ++ derleyicisi olan Coliru'yu kullanma seçeneğiniz de vardır .
Bu, kes, yapıştır ve tıkla kadar basit değil - ama çok da zor değil - ve yukarıda belirtildiği gibi şablon parametrelerinde herhangi bir sorun yok gibi görünüyor. Bunun gibi bir şey çalıştırmak için komut satırını değiştirmeniz yeterlidir:
cat main.cpp | c++filt -t
Bunu çözen bu örnekle canlı görün :
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
için:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^