জিসিসি-জি বনাম -জি 3 জিডিবি পতাকা: পার্থক্য কী?


102

জিসিসি বা কলংয়ের সাথে সি উত্স কোডটি সংকলন করার সময়, আমি সর্বদা -gজিডিবি-র জন্য ডিবাগিং তথ্য উত্পন্ন করতে পতাকা ব্যবহার করি ।

gcc -g -o helloworld helloworld.c

আমি লক্ষ্য করেছি যে এর -g3পরিবর্তে কিছু লোক প্রস্তাব দেয় । পতাকা -gএবং -g3পতাকা মধ্যে পার্থক্য কি ? এছাড়াও -gএবং মধ্যে একটি পার্থক্য আছে -ggdb?


15
আমি এখানে এসেছি কারণ আমি অন্য কারও মেকফিল ব্যবহার করছি, এবং ডকুমেন্টেশনটি শুরু হতে একটি জন্তু। গুগল থেকে একটি সহজ উত্তর খুঁজতে স্ট্যাকওভারফ্লোতে থাকা ভাল প্রশ্ন।
গ্রিনএজজেড

আপনি যতদূর যথেষ্ট খনন করতে ইচ্ছুক থাকছেন ততক্ষণ এসও-তে একটি অপ্রতিরোধ্য প্রশ্নগুলি "আমার ডকুমেন্টেশনগুলিকে আচ্ছাদিত করে" are এটি কোনও প্রশ্ন খারিজ করার বৈধ কারণ নয়।
BeeOnRope

উত্তর:


104

ডক্স থেকে :

-জি

অপারেটিং সিস্টেমের নেটিভ ফর্ম্যাটে (স্ট্যাবস, সিওএফএফ, এক্সসিওএফএফ, বা ডিয়ারএফ 2) ডিবাগিংয়ের তথ্য উত্পন্ন করুন। জিডিবি এই ডিবাগিং তথ্য নিয়ে কাজ করতে পারে। বেশিরভাগ সিস্টেমে স্ট্যাব ফর্ম্যাট ব্যবহার করে, -g অতিরিক্ত ডিবাগিং তথ্যের ব্যবহার সক্ষম করে যা কেবলমাত্র জিডিবি ব্যবহার করতে পারে; এই অতিরিক্ত তথ্যটি ডিবিগিংয়ের কাজকে জিডিবিতে আরও উন্নত করে তবে সম্ভবত অন্যান্য ডিবাগারগুলি ক্রাশ করে বা প্রোগ্রামটি পড়তে অস্বীকার করে। অতিরিক্ত তথ্য উত্পন্ন করতে হবে কিনা তা আপনি যদি নির্দিষ্টভাবে নিয়ন্ত্রণ করতে চান তবে -gstabs +, -gstabs, -gxcoff +, -gxcoff, বা -gvms (নীচে দেখুন) ব্যবহার করুন।

...


-জিজিডিবি

জিডিবি দ্বারা ব্যবহারের জন্য ডিবাগিংয়ের তথ্য প্রস্তুত করুন। এর অর্থ উপলব্ধ সর্বাধিক অভিব্যক্তিপূর্ণ ফর্ম্যাট (DWARF 2, ছুরিকাঘাতগুলি, বা তাদের কোনওটি সমর্থিত না হলে নেটিভ ফর্ম্যাট) ব্যবহার করা, যদি সম্ভব হয় তবে জিডিবি এক্সটেনশন সহ।


-gvmslevel

ডিবাগিং তথ্যের জন্য অনুরোধ করুন এবং কত তথ্য নির্দিষ্ট করতে স্তর ব্যবহার করুন। ডিফল্ট স্তরটি হল ২ স্তর কোনও ডিবাগ তথ্য তৈরি করে না। সুতরাং, -g0 -g অবহেলা করে।

....

স্তর 3 এ অতিরিক্ত তথ্য অন্তর্ভুক্ত রয়েছে যেমন প্রোগ্রামে উপস্থিত সমস্ত ম্যাক্রো সংজ্ঞা s আপনি -g3 ব্যবহার করার সময় কিছু ডিবাগার ম্যাক্রো সম্প্রসারণকে সমর্থন করে।


8
উদাহরণস্বরূপ "সর্বাধিক অভিব্যক্তিপূর্ণ ফর্ম্যাট" এবং "অতিরিক্ত তথ্য" এর মধ্যে পার্থক্য কী তা এখনও ব্যাখ্যা করা সম্ভব? এই পরামিতি কি প্রশংসামূলক? তাদের মধ্যে অনেকে জিডিবি উল্লেখ করেছেন ... ধন্যবাদ!
রজারডপ্যাক

28

tl; dr: আপনার নির্দিষ্ট প্রশ্নের উত্তর দিতে, -g3"ম্যাক্রো সংজ্ঞা যেমন অতিরিক্ত তথ্য অন্তর্ভুক্ত করে ... কিছু ডিবাগার আপনি যখন ব্যবহার করেন তখন ম্যাক্রো সম্প্রসারণকে সমর্থন করেন -g3", যখন -gএই অতিরিক্ত তথ্য অন্তর্ভুক্ত করে না।

এর বিস্তৃত উত্তর হ'ল (সর্বাধিক ডিবাগ তথ্য) -g0মাধ্যমে -g3( ডিবাগ তথ্য অক্ষম করা) থেকে জিসিসি চার স্তরের ডিবাগ তথ্যকে সমর্থন করে ।

নির্দিষ্টকরণের -gসমতুল্য -g2। কৌতূহলজনকভাবে, gcc ডক্স কোন তথ্য -g/ -g2অন্তর্ভুক্ত বা বাদ দেয় সে সম্পর্কে খুব কম বলে :

ডিবাগিং তথ্যের জন্য অনুরোধ করুন এবং কত তথ্য নির্দিষ্ট করতে স্তর ব্যবহার করুন। ডিফল্ট স্তরটি হল ২ স্তর কোনও ডিবাগ তথ্য তৈরি করে না। সুতরাং, -g0 -g অবহেলা করে।

স্তর 1 ন্যূনতম তথ্য উত্পাদন করে, প্রোগ্রামের অংশগুলিতে ব্যাকট্রেস তৈরির জন্য যথেষ্ট যা আপনি ডিবাগ করার পরিকল্পনা করেন না। এর মধ্যে ফাংশন এবং বাহ্যিক ভেরিয়েবলের বর্ণনা এবং লাইন নম্বর সারণী রয়েছে তবে স্থানীয় ভেরিয়েবল সম্পর্কে কোনও তথ্য নেই।

স্তর 3 এ অতিরিক্ত তথ্য অন্তর্ভুক্ত রয়েছে যেমন প্রোগ্রামে উপস্থিত সমস্ত ম্যাক্রো সংজ্ঞা s আপনি -g3 ব্যবহার করার সময় কিছু ডিবাগার ম্যাক্রো সম্প্রসারণকে সমর্থন করে।

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