Erlang Debugger এবং Tracing টুলস
Erlang-এ প্রোগ্রামিং করতে গিয়ে কোড ডিবাগিং এবং ট্রেসিং অত্যন্ত গুরুত্বপূর্ণ। Erlang Debugger এবং Tracing tools প্রোগ্রামারদের কোডের সমস্যা চিহ্নিত করতে এবং প্রোগ্রামের কার্যকারিতা পরীক্ষা করতে সাহায্য করে। এটি ডেভেলপারদের তাদের কোডে ত্রুটি খুঁজে বের করতে, পারফরম্যান্স বিশ্লেষণ করতে এবং কোডের এক্সিকিউশন বিশ্লেষণ করতে সহায়তা করে।
এখানে Erlang-এর Debugger এবং Tracing টুলস-এর ব্যবহার এবং তাদের বৈশিষ্ট্যগুলি আলোচনা করা হলো।
1. Erlang Debugger
Erlang Debugger হল একটি ইন্টারঅ্যাকটিভ টুল যা Erlang কোড ডিবাগিংয়ের জন্য ব্যবহৃত হয়। এটি breakpoints সেট করা, step through করা এবং watch variables পরীক্ষা করার জন্য ব্যবহৃত হয়, যাতে ডেভেলপাররা সহজে কোডের মধ্যে ত্রুটি চিহ্নিত করতে পারে।
1.1 Erlang Debugger এর চালু করা
Erlang Debugger চালু করতে debugger:start(). ফাংশন ব্যবহার করা হয়।
1> debugger:start().এটি Erlang ইন্টারপ্রেটারে ডিবাগger GUI চালু করবে, যা আপনাকে Erlang কোডের মধ্যে ব্রেকপয়েন্ট সেট করতে এবং কোডের এক্সিকিউশন ট্র্যাক করতে সহায়তা করবে।
1.2 Breakpoints এবং Step Through
Breakpoints হল পয়েন্ট যেখানে এক্সিকিউশন থামানো হয় এবং আপনি ভেরিয়েবলগুলির মান দেখতে পারেন। আপনি একাধিক ব্রেকপয়েন্ট সেট করতে পারেন এবং এক্সিকিউশন চালু বা থামানোর জন্য বিভিন্ন অপশন ব্যবহার করতে পারেন।
- Set a breakpoint: কোডের নির্দিষ্ট লাইনে ব্রেকপয়েন্ট সেট করতে
debuggerGUI ব্যবহার করা যায়। - Step Through: একে একে কোডের মাধ্যমে এগিয়ে যেতে এবং প্রতিটি লাইনে কী হচ্ছে তা দেখতে step অপশন ব্যবহার করা হয়।
1.3 Watch Variables
Watch variables ব্যবহার করে আপনি বিশেষ ভেরিয়েবলগুলির মান লক্ষ্য রাখতে পারেন। যখনই ঐ ভেরিয়েবলের মান পরিবর্তিত হয়, তখন এটি ডিবাগger এর মাধ্যমে দেখা যাবে।
2. Erlang Tracing
Tracing হল Erlang এ কোডের কার্যকারিতা এবং পারফরম্যান্স বিশ্লেষণের জন্য ব্যবহৃত আরেকটি গুরুত্বপূর্ণ টুল। এটি কোডের মধ্যে কার্যকরী সমস্ত ফাংশন এবং বার্তাগুলি ট্র্যাক করার জন্য ব্যবহৃত হয়।
Erlang এ dbg টুলটি ডিবাগging এবং ট্রেসিংয়ের জন্য ব্যবহৃত হয়। এটি বিভিন্ন ধরণের ট্রেসিং উপলব্ধ করে যেমন ফাংশন কল, মেসেজ প্রেরণ, এবং প্রক্রিয়া স্ট্যাটাস।
2.1 Tracing চালু করা
Tracing চালু করতে, Erlang এ dbg:start() ফাংশন ব্যবহার করা হয়।
dbg:start().এটি ট্রেসিং শুরু করবে এবং কোডের এক্সিকিউশন ট্র্যাক করতে সাহায্য করবে।
2.2 Tracing ফাংশন কল
একটি নির্দিষ্ট ফাংশন বা মডিউল ট্রেস করতে, dbg:tpl/2 বা dbg:tpl/3 ফাংশন ব্যবহার করা হয়।
dbg:tpl(my_module, my_function, []).এখানে:
my_module: মডিউল নাম।my_function: ফাংশনের নাম যা ট্রেস করতে চান।[]: এটি ফাংশনটি যে কোনো আর্গুমেন্ট গ্রহণ করবে না তা নির্দেশ করে।
2.3 Tracing মেসেজ প্রেরণ
এছাড়া, Erlang এ প্রক্রিয়ার মধ্যে বার্তা প্রেরণ ট্রেস করার জন্য dbg:msg/2 ব্যবহার করা যায়।
dbg:msg(pid, [call, cast, info]).এটি একটি প্রক্রিয়ার আইডি (PID) এর মাধ্যমে বার্তা প্রেরণ এবং সেগুলির ট্রেস শুরু করবে। call, cast, এবং info হল বিভিন্ন ধরনের মেসেজ ট্রেসিং অপশন।
2.4 Tracing স্টপ করা
ট্রেসিং বন্ধ করতে, dbg:stop() ফাংশন ব্যবহার করা হয়।
dbg:stop().এটি ট্রেসিং বন্ধ করবে এবং সমস্ত ট্রেস ডেটা পরিস্কার করবে।
3. Erlang Tracing এর বিভিন্ন অপশন
- call: ফাংশন কল এবং তার আর্গুমেন্টগুলো ট্রেস করে।
- cast: cast বার্তা প্রেরণ ট্রেস করে (যা কোনও প্রসেসে অ্যাসিঙ্ক্রোনাস মেসেজ পাঠায়)।
- info: সাধারণ তথ্য ট্রেস করে, যেমন প্রসেসের আইডি এবং তার বর্তমান অবস্থান।
উদাহরণ:
1> dbg:start().
2> dbg:tpl(my_module, my_function, []).
3> dbg:msg(pid, [call, cast]).এখানে:
dbg:start(): ট্রেসিং শুরু করা হয়েছে।dbg:tpl/2: মডিউল এবং ফাংশনের জন্য ট্রেসিং শুরু করা হয়েছে।dbg:msg/2: প্রক্রিয়ার মধ্যে বার্তা প্রেরণ ট্রেস করা হচ্ছে।
4. Erlang Debugging and Tracing টুলস ব্যবহার করার সুবিধা
- Problem Isolation: ডিবাগার এবং ট্রেসার ব্যবহার করে আপনি কোডের কোন অংশে সমস্যা রয়েছে তা চিহ্নিত করতে পারেন।
- Performance Monitoring: ট্রেসিংয়ের মাধ্যমে আপনি কোডের পারফরম্যান্স পরীক্ষা করতে পারেন এবং কার্যকারিতা বুঝতে পারেন।
- Concurrency Debugging: Erlang এ অনেক প্রক্রিয়া একসাথে চলে, এবং ট্রেসিংয়ের মাধ্যমে আপনি সঠিকভাবে কোডের কার্যকারিতা পরীক্ষা করতে পারেন, যেমন কোন প্রক্রিয়া কী কাজ করছে।
- Complex System Monitoring: ডিস্ট্রিবিউটেড সিস্টেমে বিভিন্ন নোডে কার্যকরী প্রক্রিয়া এবং বার্তা আদান-প্রদান ট্রেস করা সম্ভব।
উপসংহার
Erlang এর Debugger এবং Tracing টুলস কোড ডিবাগিং এবং বিশ্লেষণের জন্য অত্যন্ত কার্যকরী। Debugger GUI এবং ব্রেকপয়েন্টের মাধ্যমে কোডের এক্সিকিউশন পর্যবেক্ষণ করতে সহায়তা করে, যখন Tracing টুলস কোডের কার্যকারিতা এবং মেসেজ আদান-প্রদান পর্যবেক্ষণ করার জন্য ব্যবহৃত হয়। এগুলি কোডের সমস্যা চিহ্নিত করতে এবং তার কার্যকারিতা উন্নত করতে খুবই গুরুত্বপূর্ণ।
Read more