GDB (GNU Debugger) একটি শক্তিশালী টুল যা প্রোগ্রামারদের C, C++, এবং Assembly Language প্রোগ্রাম ডিবাগ করার জন্য ব্যবহৃত হয়। GDB ব্যবহার করে Assembly Code ডিবাগিং করার মাধ্যমে প্রোগ্রামের কার্যপ্রবাহ, রেজিস্টার মান এবং মেমোরি স্টেট বিশ্লেষণ করা যায়।
GDB এর মাধ্যমে Assembly Code Debugging এর ধাপ
প্রাথমিক প্রস্তুতি:
Assembly Code কম্পাইল করা: Assembly কোডকে ডিবাগ করার জন্য কম্পাইল করতে হবে
-gফ্ল্যাগ ব্যবহার করে, যা ডিবাগিং ইনফরমেশন যুক্ত করে।nasm -f elf64 -g program.asm -o program.o ld program.o -o programGDB শুরু করা: প্রোগ্রাম GDB দিয়ে চালানো।
gdb ./program
GDB কমান্ড:
প্রাথমিক কমান্ড:
start: প্রোগ্রামের শুরু থেকে ডিবাগিং শুরু করার জন্য।(gdb) startlayout asm: Assembly কোডের লেআউট দেখতে।(gdb) layout asmbreakবাb: নির্দিষ্ট ঠিকানায় বা লেবেলে ব্রেকপয়েন্ট সেট করতে।(gdb) break _start
নির্দেশনা পরীক্ষা ও চলাচল:
stepi(বাsi): এক ধাপে এক নির্দেশনা কার্যকর করতে (Single-step execution)।(gdb) stepinexti(বাni): এক ধাপে এক নির্দেশনা কার্যকর করা, তবে কল করা সাবরুটিনে প্রবেশ না করে (Next instruction)।(gdb) nexti
রেজিস্টার এবং মেমোরি বিশ্লেষণ:
info registers: সমস্ত রেজিস্টারের বর্তমান মান দেখতে।(gdb) info registersx: মেমোরি পরীক্ষা করতে (Examine memory)।(gdb) x/16xb $espprintবাp: নির্দিষ্ট রেজিস্টার বা ভেরিয়েবলের মান দেখতে।(gdb) print $eax
GDB Debugging এর উদাহরণ
section .data
msg db 'Hello, World!', 0
section .text
global _start
_start:
mov edx, 13 ; msg দৈর্ঘ্য
mov ecx, msg ; msg অ্যাড্রেস
mov ebx, 1 ; stdout
mov eax, 4 ; sys_write
int 0x80 ; সিস্টেম কল
mov eax, 1 ; sys_exit
xor ebx, ebx ; এক্সিট কোড 0
int 0x80 ; সিস্টেম কলGDB কমান্ড উদাহরণ:
প্রোগ্রাম চালু করা:
(gdb) startAssembly কোড দেখতে:
(gdb) layout asmনির্দিষ্ট ব্রেকপয়েন্ট সেট করা:
(gdb) break _startস্টেপ বাই স্টেপ ডিবাগিং:
(gdb) stepiরেজিস্টার চেক করা:
(gdb) info registers
GDB Debugging এর সুবিধা:
Assembly কোড পরীক্ষা:
- এক ধাপে এক নির্দেশনা পরীক্ষা করা যায়, যা কোডের কার্যপ্রবাহ বিশ্লেষণ করতে সাহায্য করে।
রেজিস্টার ও মেমোরি বিশ্লেষণ:
- প্রোগ্রামের রেজিস্টার মান এবং মেমোরি স্টেট চেক করার মাধ্যমে ত্রুটি চিহ্নিত করা যায়।
কোড অপ্টিমাইজেশন:
- Assembly কোডের কার্যকারিতা পরীক্ষা করে এবং অপ্টিমাইজ করার জন্য সহায়ক।
সারসংক্ষেপ
GDB একটি শক্তিশালী টুল যা Assembly Language প্রোগ্রাম ডিবাগ করতে এবং কার্যপ্রণালী বিশ্লেষণ করতে সাহায্য করে। এটি রেজিস্টার এবং মেমোরি চেক করা, স্টেপ বাই স্টেপ নির্দেশনা কার্যকর করা, এবং ব্রেকপয়েন্ট ব্যবহার করে কোডের ত্রুটি নির্ণয় করতে পারে। GDB ব্যবহার করে Assembly Code Debugging প্রোগ্রামিংয়ে দক্ষতা বৃদ্ধিতে সহায়ক।
Read more