একটি PDB ফাইল কি?
.pdb এক্সটেনশন সহ একটি ফাইল হল একটি প্রোগ্রাম ডাটাবেস ফাইল যাতে একটি সংকলিত এক্সিকিউটেবল (EXE/DLL) এর জন্য ডিবাগিং তথ্য থাকে। PDB ফাইলগুলি মাইক্রোসফ্ট কম্পাইলার দ্বারা তৈরি হয় যখন একটি অ্যাপ্লিকেশন প্রোগ্রাম ডিবাগ মোডে কম্পাইল করা হয়। PDB ফাইলের উপস্থিতি একটি এক্সিকিউটেবলকে রিভার্স ইঞ্জিনিয়ারিং করতে সাহায্য করতে পারে কারণ এতে মডিউলের সমস্ত প্রতীক সম্পর্কে গুরুত্বপূর্ণ তথ্য রয়েছে। এই কারণেই এই ফাইলগুলি চূড়ান্ত এক্সিকিউটেবল থেকে আলাদা রাখা হয়। Microsoft-এর DgbHelp API একটি PDB ফাইল খুলতে পারে যেমন পাবলিক এবং এক্সপোর্ট, গ্লোবাল সিম্বল, লোকাল সিম্বল, টাইপ ডেটা, সোর্স ফাইল এবং লাইন নম্বরের মতো তথ্য পেতে।
PDB ফাইল ফরম্যাট
PDB হল মাইক্রোসফটের মালিকানাধীন ফাইল ফরম্যাট এবং এখনও কোথাও আনুষ্ঠানিকভাবে নথিভুক্ত করা হয়নি। যাইহোক, একটি প্রারম্ভিক ডকুমেন্টেশন উপলব্ধ here এবং উল্লেখ করা যেতে পারে৷
পিডিবি স্ট্রীম
PDB ফাইলগুলি একাধিক স্ট্রিম নিয়ে গঠিত যেখানে প্রতিটি স্ট্রীম একটি ভার্চুয়াল পৃথক ফাইল হিসাবে কাজ করে এবং এতে তথ্য থাকে। PDB ফাইল লেখকরা এই ফাইলগুলিতে লিখতে পারেন এবং একটি স্পষ্ট প্রতিশ্রুতি জারি করার পরেই ফাইলটি চূড়ান্ত করা হয়। একটি কম্পাইলার একটি PDB ফাইলে লেখা চালিয়ে যেতে পারে তবে সমস্ত ব্যবহারকারী কোড সফলভাবে কম্পাইল করলেই প্রতিশ্রুতিবদ্ধ। একটি PDB ফাইল নিম্নলিখিত স্ট্রীম নিয়ে গঠিত:
স্ট্রিম নম্বর | বিষয়বস্তু | সংক্ষিপ্ত বিবরণ |
---|---|---|
1 | Pdb (হেডার) | সংস্করণ তথ্য, এবং তথ্য এই PDB কে EXE এর সাথে সংযুক্ত করার জন্য |
2 | Tpi (টাইপ ম্যানেজার) | এক্সিকিউটেবলে ব্যবহৃত সকল প্রকার। |
3 | ডিবিআই (ডিবাগ তথ্য) | বিভাগের অবদান এবং ‘মোড’-এর তালিকা রাখে |
4 | নামম্যাপ | একটি হ্যাশড স্ট্রিং টেবিল |
4-(n+4) | n Mod’s (মডিউল তথ্য) | প্রতিটি মোড স্ট্রীম একটি কম্পাইল্যান্ডের জন্য প্রতীক এবং লাইন সংখ্যা ধারণ করে |
n+4 | গ্লোবাল প্রতীক হ্যাশ | একটি সূচক যা নাম দ্বারা বিশ্বব্যাপী চিহ্নগুলিতে অনুসন্ধান করার অনুমতি দেয় |
n+5 | সর্বজনীন প্রতীক হ্যাশ | একটি সূচক যা ঠিকানা দ্বারা সর্বজনীন প্রতীকগুলিতে অনুসন্ধান করার অনুমতি দেয় |
n+6 | প্রতীক রেকর্ড | বিশ্বব্যাপী এবং সর্বজনীন প্রতীকের প্রকৃত প্রতীক রেকর্ড |
n+7 | হ্যাশ টাইপ করুন | TPI স্ট্রিম দ্বারা ব্যবহৃত হ্যাশ। |
একটি PDB ফাইলের প্রতিটি স্ট্রীম বেশ কয়েকটি পৃষ্ঠা নিয়ে গঠিত যা অগত্যা ধারাবাহিকভাবে সংখ্যাযুক্ত নয়।
PDB হেডার
একটি পিডিবি ফাইল একটি শিরোনাম সহ যা নির্দিষ্ট বিন্যাস সনাক্তকরণ এবং যাচাই করার জন্য একটি স্বাক্ষর নিয়ে গঠিত। স্বাক্ষরের দৈর্ঘ্য PDB বিন্যাসের উপর নির্ভর করে। শিরোনাম একটি একক পৃষ্ঠার চেয়ে দীর্ঘ হতে পারে।
PDB মেটাডেটা
The PDB metadata is responsible to recognize all of the component streams, giving the length, and sequence of pages for each stream. Orders are given to streams consecutively; starting with 0. এছাড়াও একটি অ-অর্ডারড রুট স্ট্রীম রয়েছে, যা কিছু মেটাডেটা ধারণ করে।