
কোডিং করার সময় GCC বিভিন্ন সোর্স কোড কম্পাইল করার জন্য খুব হ্যান্ডি। GCC-র সাথে কাজ করার সময় আপনি বিভিন্ন ফ্ল্যাগ ব্যবহার করতে পারেন যেমন -g ফ্ল্যাগ। কম্পাইলেশন কমান্ডকে একটি দিয়ে ফ্ল্যাগ দিয়ে এক্সিকিউট করা আউটপুট থেকে আপনি কী এক্সপেক্ট করেন তা স্পেসিফাই করার জন্য আদর্শ। এই পোস্ট GCC -g ফ্ল্যাগcento ফোকাস করে। আমরা বুঝব GCC -g ফ্ল্যাগ কী, এর সুবিধা, এবং GCC -g ফ্ল্যাগের বাস্তব উদাহরণ ব্যবহার করে ডেমো করব। পড়ুন!
GCC -G ফ্ল্যাগ কী
কোড কম্পাইলেশন যেসব এরর ডিবাগ করারও জড়িত যা আপনার প্রোগ্রামে থাকতে পারে। আপনার এমন একটি কেস থাকতে পারে যেখানে আপনি আপনার কোড সম্পর্কে ডিবাগিং ইনফরমেশন পেতে চান। সেই কেসে, আপনাকে GCC -g ফ্ল্যাগের সাথে কাজ করতে হবে।
এই অপশন আপনাকে কোড কম্পাইল করার সময় অতিরিক্ত ডিবাগিং ইনফরমেশন জেনারেট করতে সাহায্য করবে, যাতে আপনি কোড ডিবাগ করতে সহজে পারেন। একজন ডেভেলপার হিসেবে, -g ফ্ল্যাগ আপনাকে আপনার কোড বুঝতে এবং সহজে ডিবাগ করতে দেয়। এটি নিচের সিনট্যাক্স দিয়ে কাজ করে:
gcc -g -o output-file input-program
আউটপুট ফাইল হলো কম্পাইলড প্রোগ্রামের নাম, در حالی যে ইনপুট প্রোগ্রাম হলো টার্গেট কোড যা আপনি কম্পাইল করতে চান।
ডেভেলপাররা কোড ডিবাগ করতে অনেক কাজ করেন যাতে সেটি এক্সপেক্টেডভাবে রান করে। ডিবাগিং এরর চেনে এবং ফিক্স করার জন্য অত্যন্ত গুরুত্বপূর্ণ। GCC -g ফ্ল্যাগ ডেভেলপারদের তাদের প্রোগ্রামের সাথে স্মুথলি কাজ করতে দিয়ে অসংখ্য সুবিধা দেয়।
নিচে এর প্রদত্ত বিভিন্ন সুবিধাগুলো দেওয়া হলো:
১. স্ট্যাক ট্রেস তৈরি করা
স্ট্যাক ট্রেস রেফার করে একটি প্রোগ্রাম এক্সিকিউশন সময় এক্টিভ স্ট্যাক ফ্রেমের একটি রিপোর্ট। যখন আপনার প্রোগ্রাম ক্র্যাশ করে, আপনি আপনার প্রোগ্রামের বিভিন্ন পয়েন্টে স্ট্যাক ট্রেস পাবেন যেখানে কোড ব্রেক হয়েছে যাতে চেনা যায় এরর কোথায় হয়েছে এবং কীভাবে সেটি সেরাভাবে ফিক্স করা যায়। স্ট্যাক ট্রেস প্রোগ্রামের স্টেট এরর হলে কেমন ছিল তার ক্রমও হাইলাইট করে। তাই, আপনি সহজে এরর হওয়ার আগে ইভেন্টের ক্রম চেনে পারবেন এবং কীভাবে ফিক্স করতে হয়।
২. ভেরিয়েবল ইন্সপেকশন
-g ফ্ল্যাগের সাথে আসা ডিবাগিং ইনফরমেশন আপনার প্রোগ্রামের ভেরিয়েবলগুলোর ভ্যালু রানটাইমে ইন্সপেক্ট করতে সাহায্য করে। আপনি চেক করতে পারেন রানটাইমে ভেরিয়েবলগুলো কী স্টেটে আছে। অতএব, আপনি প্রোগ্রামের বিহেভিয়র এরর হওয়ার আগে বিভিন্ন পয়েন্টে সহজে বুঝতে পারেন।
৩. সিম্বলিক ইনফরমেশন
যখন আপনি -g ফ্ল্যাগ যোগ করেন, আপনি সিম্বলিক ইনফরমেশন পাবেন যা সোর্স কোডকে কম্পাইলড বাইনারি সাথে লিঙ্ক করে। সিম্বলিক ইনফরমেশন شامل থাকে লাইন নাম্বার এবং ভেরিয়েবল নামের মতো জিনিসগুলো। সেই কারণে, আপনি সহজে প্রোগ্রাম এক্সিকিউশনকে এর আসল কোডের সাথে ম্যাপ করতে পারেন যা অ্যানালাইসিস এবং ডিবাগিং সহজ করে দেয়।
৪. কন্ডিশনাল ব্রেকপয়েন্ট
GDB যেন ডিবাগারের সাথে কাজ করা -g ফ্ল্যাগ দিয়ে জেনারেট করা ডিবাগিং ইনফরমেশনের উপর নির্ভর করে আপনার সোর্স কোডে টেম্পোরারি ব্রেকপয়েন্ট তৈরি করতে। এই ব্রেকপয়েন্টগুলো ডেভেলপারদের প্রোগ্রামে কন্ডিশন বা সেকশন ডিফাইন করতে সাহায্য করে যখন প্রোগ্রাম हाल্ট করা উচিত। তাই, আপনি সহজে ব্রেকপয়েন্ট সেট করে কোড ডিবাগ করতে পারেন যাতে পরীক্ষা করা যায় কোন সেকশন আপনার কোডে এরর সৃষ্টি করছে। একটি প্রোগ্রাম এর ব্রেকপয়েন্ট ব্যবহার করে অ্যানালাইসিস করা পুরো কোড চেক করার চেয়ে সহজ।
GCC -g ফ্ল্যাগের সুবিধা জানার পর, এটি কীভাবে ব্যবহার করে আপনার ডিবাগিং সহজ করতে পারেন তা ডেমো করার সময়। এখানে, আমরা "linuxhint.c" নামে একটি সি সোর্স ফাইল নিয়ে কাজ করছি।
চলুন GCC -g ফ্ল্যাগ ব্যবহার করে এটি কম্পাইল করি নিচের কমান্ড দিয়ে:
gcc -g -o demo1 linuxhint.c

-g ফ্ল্যাগ যোগ করলে, আপনি একটি বাইনারি ফাইল পাবেন যেটি ইনফরমেশন ধারণ করে এবং যেটি আপনি আপনার ডিবাগারের সাথে ব্যবহার করতে পারেন। আমরা আমাদের জেনারেট করা বাইনারি ফাইলকে "demo1" নাম দিয়েছি। চলুন এগিয়ে যাই এবং GNU Debugger (GNU Debugger) এর সাথে এর ব্যবহার উদাহরণ দেই।
নিচের ছবিতে দেখানো মত ডিবাগার রান করুন:

GNU ওপেন হবে এবং আপনি ডিবাগিং-এ ইন্টারঅ্যাক্ট করতে পারবেন। উদাহরণস্বরূপ, নিচের উদাহরণে, আমরা আমাদের ব্রেকপয়েন্ট ১৫ সেট করেছি। তারপর, আমরা ব্রেকপয়েন্ট দিয়ে প্রোগ্রাম রান করেছি এবং প্রোগ্রামের বিভিন্ন ভেরিয়েবল এক্সামিন করেছি।

GCC -g ফ্ল্যাগ ব্যবহার করার فضل, আমরা সহজে ডিবাগার বুঝতে ও কাজ করতে পারি যদি আমাদের স্পেসিফিক ডিবাগিং ইনফরমেশন থাকে। এটাই হলো GCC -g ফ্ল্যাগ ব্যবহার করার পদ্ধতি।
উপসংহার
GCC -g ফ্ল্যাগ আপনার প্রোগ্রাম অ্যানালাইসিস ও ডিবাগ করার জন্য ব্যবহারযোগ্য ডিবাগিং ইনফরমেশন জেনারেট করার জন্য হ্যান্ডি। আমরা GCC -g ফ্ল্যাগের সুবিধা ব্যাখ্যা করেছি এবং একটি উদাহরণ দিয়েছি বুঝতে কীভাবে এটি ব্যবহার করতে হয় আপনার প্রোগ্রাম কম্পাইল করার সময় এবং ডিবাগারের সাথে কাজ করার সময়।
লেখক সম্পর্কে

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