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


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.