সি ++ এর জন্য কোনও অনলাইন নাম ডিমেংলার রয়েছে? [বন্ধ]


109

আমি বেশ দীর্ঘ এবং বিভ্রান্তিকর লিঙ্ক ত্রুটি পেয়ে যাচ্ছি, এবং আমি যদি এটি কেবল কোনও ওয়েবসাইটের কোনও পাঠ্যবক্সে পেস্ট করতে পারি এবং নামগুলি আমার জন্য অ-মংগল করতে পারি তবে এটি পছন্দ করব।

কেউ কি এই ধরনের পরিষেবা সম্পর্কে জানেন?


3
বিটিডব্লিউ, আপনার সংকলকটি কী? হতে পারে আপনি কেবল এটির সাথে চালিত একটি প্রস্তুত সরঞ্জাম ব্যবহার করতে পারেন।
— শার্পথথ

4
আমি "Undname.exe" খুঁজে পেয়েছি এবং এটি ভিসি ++ এর জন্য কাজ করেছে।
— রোমান স্টারকভ

3
আপনার নামটি এখানে আটকান, এবং এটি কোনও ভিসি ২০০৫ নাম হলে আমি এটি ডিমেং করব।
— xtofl

কোন অনলাইন প্রয়োজনীয়তা: stackoverflow.com/questions/4468770/...
— সিরো Santilli郝海东冠状病六四事件法轮功

উত্তর:


133

আমি এই জাতীয় একটি অনলাইন সিরিভ তৈরি করেছি: https://demangler.com

এটি একটি গিসি সি ++ প্রতীক ডিমেংলার। আপনি কেবল একটি স্ট্যাক ট্রেস, বা এনএম এর আউটপুটটিকে একটি পাঠ্য বাক্সে অনুলিপি করতে পারেন, এবং এটি নামগুলিকে নামযুক্ত করে আউটপুট ফিরিয়ে দেবে।

@ আপডেট: এটি এখন এমএসভিসি এবং জাভা প্রতীককেও ডিমেংল করে।


এইটি আমার পক্ষে কাজ করেছে, তবে বেশি জনপ্রিয় উত্তরের মধ্যে একটিও নয়: _ZN9cdnalizer11rewriteHTMLINS_6apache8IteratorEcEET_RKSsRKNS_6ConfigES3_S3_St8functionIFS3_RKS3_SB_EES9_IFvSsEE
— matiu

আপনার ডিমেংলার ইটানিয়ামের রেফ কোয়ালিফায়ারকে ডিমেংল করতে পারে না। আমি ক্ল্যাং দ্বারা উত্পাদিত _ZNR4test1fEv দেখছি।
— পপি

ধন্যবাদ, সুন্দর সাইট! আপনি দয়া white-space: normalকরে প্রতিক্রিয়া সংযুক্ত করতে বা অনুরূপ করতে পারেন <<< ট্যাগ ট্যাগ (এবং সম্ভবত লাইন নম্বর যোগ করুন)? দীর্ঘ এক-লাইন আউটপুট বর্তমানে পঠনযোগ্য নয়।
— jPLtte

1
আপনি সতর্কতা অবলম্বন করা উচিত. ডেমাঙ্গলারগুলির বেশিরভাগ বাস্তব-বাস্তবায়ন হ'ল মারাত্মক বগি এবং নিরাপত্তাহীন। এগুলি মূলত একই প্লাটফর্মটি উত্পাদিত মাংডযুক্ত নামগুলিতে কেবল কাজ করে তবে উচ্চতর জটিলতায় বা সাধারণ ইনপুটগুলিতে মেমরির ত্রুটিগুলি সরিয়ে দিতে পারে।
— কেরেক এসবি

8
আমি এটি নিয়মিত ব্যবহার করেছি। যদিও এটি নিচে রয়েছে বলে মনে হচ্ছে t এটি একটি খুব সুন্দর, দরকারী পৃষ্ঠা ছিল
— ২২

104

এটি কিছুটা দেরিতে হতে পারে তবে আমি এই প্রশ্নের ভিত্তিতে একটি তৈরি করেছি। এটি আমি চেষ্টা করেছি এমন ইনপুটগুলির সাথে কাজ করে, এমস্ক্রিপ্টের মাধ্যমে জাভাস্ক্রিপ্টে সংকলিত __cxa_demangle এবং __unDName এর মাধ্যমে g ++ এবং msvc ++ সমর্থন করে। আশা করি এটি কাউকে সাহায্য করবে: c ++ ফিল্টজগুলি

সম্পাদনা: স্থগিত পালানোর সমস্যা


6
অসাধারণ! ধন্যবাদ! সম্ভবত পৃষ্ঠায় কোথাও "অনলাইন সি ++ নাম ডেম্যাংলার" উল্লেখ করুন, যাতে লোকেরা আপনাকে গুগলের মাধ্যমে খুঁজে পেতে পারে?
— রোমান স্টারকভ

1
ঠিক আছে, এখনই ঠিক করা উচিত।
— নট্টোফ্রেন্ডস

3
@ জিব্রি: একটি "ছোট সি উত্স" অনলাইন নয়। তার জন্য, বিদ্যমান সি ++ ফিল্ট এবং আনডনেম ইউটিলিটিগুলি ব্যবহার করুন।
— নাটোফ্রেন্ডস 21

1
@ নেটফ্রেন্ডস: আপনার সরঞ্জামটি বন্ধনী থেকে রক্ষা পেয়েছে বলে মনে হচ্ছে না, দেখুন ??_R3?$KxSet@V?$KxSpe@DI@@I@@8।
— মাকিং হাঁস

2
আপনি যদি অন্যদের উল্লিখিত টেম্পলেটগুলি দিয়ে আপনার সমস্যাটি সমাধান করতে পারেন তবে এটি খুব সহায়ক হবে। এটি এসও-তে কমপক্ষে একটি উদ্দীপক প্রশ্ন তৈরি করেছে।
— শফিক ইয়াঘমুর

24

সর্বাধিক (সমস্ত না থাকলে) সি ++ সংকলকগুলি এমন c++filtসরঞ্জাম নিয়ে আসে যা আপনি সম্ভবত যা খুঁজছেন তা সুনির্দিষ্টভাবে করে।

যদি আপনি এটি মাউস ক্লিকে চান ... ভাল এটির জন্য একটি জিইউআই লিখুন;)


আমি মাউস ক্লিকের বিপরীতে ন্যূনতম প্রচেষ্টা সহ এটি চাই :) ওহ ভাল, যাইহোক যাইহোক আমার খুব বেশি প্রয়োজন হয় না।
— রোমান স্টারকভ

3
সি ++ ফিল্টের জন্য আমার সাধারণ ব্যবহারের ক্ষেত্রটি হ'ল objdump -dr ./AClass.o | c++filt | less(বিচ্ছিন্নকরণকারী) বা nm ./AClass.o | c++filt | less(অবজেক্ট ফাইলের অভ্যন্তরের প্রতীকগুলির তালিকা)
— ডামি00001

2
বেশিরভাগ সংকলক জিসিসি নয়। জিসিসি নয় এমন সংকলক সি ++ ফিল্ট পাঠায় না। আনয়ন দ্বারা, বেশিরভাগ সংকলক সি ++ ফিল্ট পাঠায় না।
— IInspectable

9

দুটি অনুলিপি এবং পেস্ট অনলাইনে সমাধান রয়েছে:

আপনার যদি কেবল জিসিসি এবং কলংয়ের জন্য সমর্থন প্রয়োজন তবে আপনার কাছে কলিরু ব্যবহারের বিকল্পও রয়েছে যা সম্ভবত সর্বাধিক বহুমুখী অনলাইন সি ++ সংকলক ।

এটি কাটা, পেস্ট করা এবং ক্লিক করার মতো সহজ নয় - তবে খুব বেশি শক্ত নয় - এবং দেখে মনে হচ্ছে যে উপরে উল্লিখিত হিসাবে টেমপ্লেট পরামিতিগুলির কোনও সমস্যা নেই। এই জাতীয় কিছু চালানোর জন্য আপনাকে কেবল কমান্ড লাইনটি পরিবর্তন করতে হবে:

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)
           ^^^^^^^^^^^

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.