هل يوجد اسم عبر الإنترنت Demangler لـ C ++؟ [مغلق

StackOverflow https://stackoverflow.com/questions/3006438

  •  25-09-2019
  •  | 
  •  

سؤال

أحصل على خطأ طويل إلى حد ما ومربك ، وسأحبه إذا كان بإمكاني لصقها في مربع نص على بعض موقع الويب ولدي أسماء غير متجانسة بالنسبة لي.

لا أحد يعرف مثل هذه الخدمة؟

هل كانت مفيدة؟

المحلول

لقد أنشأت مثل هذا الملمسي عبر الإنترنت: http://demangler.com

هذا هو رمز GCC C ++ Demangler. يمكنك فقط نسخ تتبع المكدس ، أو إخراج NM في مربع نص ، وسوف يعيد الإخراج مع الأسماء.

@update: إنه الآن يفسد رموز MSVC و Java أيضًا.

نصائح أخرى

قد يكون هذا متأخراً بعض الشيء ، لكنني أنشأت واحدة ، بناءً على هذا السؤال. إنه يعمل مع المدخلات التي جربتها ، ويدعم G ++ و MSVC ++ عبر __cxa_demangle و __undname ، تم تجميعها إلى javaScript عبر emscripten. أمل أن هذا يساعد شخصاما: C ++ filtjs

تحرير: مشكلة هروب ثابتة

معظم المترجمين (إن لم يكن كل) يأتي معهم c++filt الأداة التي تفعل بالضبط ما تبحث عنه على ما يبدو.

إذا كنت تريد ذلك عند الماوس انقر ... حسنًا ، اكتب واجهة المستخدم الرسومية من أجله ؛)

هناك حلول على الإنترنت للنسخ واللصق:

إذا كنت بحاجة فقط إلى دعم GCC و Clang ، فلديك أيضًا خيار الاستخدام كولرو, ، وهو الأكثر تنوعا برنامج التحويل البرمجي C ++ عبر الإنترنت.

هذا ليس بسيطًا تمامًا مثل القطع واللصق والنقر - ولكن ليس أكثر صعوبة - ويبدو أنه لا توجد مشاكل مع معلمات القالب كما هو مذكور أعلاه. تحتاج فقط إلى تعديل سطر الأوامر لتشغيل شيء مثل هذا:

cat main.cpp | c++filt -t

نرى أنه يعيش مع هذا المثال الذي يفسد:

_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_

إلى:

void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
           ^^^^^^^^^^^

لمعلوماتك ، هناك أيضًا جوهرة روبي لتشكيل Borland/MS/مهما كانت الأسماء المشوهة: Unmangler

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top