উইন্ডোজের ডিবাগিং সরঞ্জামগুলির সাথে মিলিত অ্যাপ্লিকেশন যাচাইকারী একটি আশ্চর্যজনক সেটআপ। আপনি উভয়ই উইন্ডোজ ড্রাইভার কিট বা হালকা উইন্ডোজ এসডিকে অংশ হিসাবে পেতে পারেন । ( হিপ দুর্নীতির সমস্যা সম্পর্কে পূর্ববর্তী প্রশ্নটি গবেষণা করার সময় অ্যাপ্লিকেশন ভেরিফায়ার সম্পর্কে জানতে পেরেছি)) আমি অতীতেও বাউন্ডসেকার এবং বীমা ++ (অন্যান্য উত্তরে উল্লিখিত) ব্যবহার করেছি, যদিও আমি অ্যাপ্লিকেশন ভেরিফায়ারে কতটা কার্যকারিতা ছিল তা অবাক করে দিয়েছিলাম।
বৈদ্যুতিক বেড়া (ওরফে "efence"), dmalloc , Valgrind , এবং আরও কিছু উল্লেখ করার মতো, তবে এর মধ্যে বেশিরভাগ উইন্ডোজের চেয়ে * নিক্সের অধীনে চলতে অনেক সহজ। ভালগ্রাইন্ড হাস্যকরভাবে নমনীয়: আমি বড় সার্ভার সফ্টওয়্যারটি অনেকগুলি হ্যাপ ইস্যু ব্যবহার করে এটি ডিবাগ করেছি।
যখন সমস্ত কিছু ব্যর্থ হয়, আপনি নিজের গ্লোবাল অপারেটরকে নতুন / মুছুন এবং ম্যালোক / কলোক / রিলোক ওভারলোডগুলি সরবরাহ করতে পারেন - কীভাবে এটি করা যায় তা সংকলক এবং প্ল্যাটফর্মের উপর নির্ভর করে কিছুটা পৃথক হতে পারে - এবং এটি কিছুটা বিনিয়োগ হবে - তবে এটি দীর্ঘ সময়ের জন্য পরিশোধ করতে পারে। কাঙ্ক্ষিত বৈশিষ্ট্য তালিকাটি dmalloc এবং বৈদ্যুতিন ঘটিত থেকে অবাক হওয়া উচিত, এবং আশ্চর্যরকম দুর্দান্ত বই রাইটিং সলিড কোড :
- সেন্ড্রি মান : সর্বাধিক সারিবদ্ধকরণের প্রয়োজনীয়তার প্রতি সম্মান জানিয়ে প্রতিটি বরাদ্দের আগে এবং পরে আরও কিছুটা জায়গার অনুমতি দিন; যাদু নম্বরগুলি পূরণ করুন (বাফার ওভারফ্লো এবং আন্ডারফ্লোগুলি এবং মাঝে মধ্যে "বন্য" পয়েন্টার ধরতে সহায়তা করে)
- বরাদ্দ পূরণ করুন : একটি যাদুবিহীন -0 মান সহ নতুন বরাদ্দগুলি পূরণ করুন - ভিজ্যুয়াল সি ++ ইতিমধ্যে এটি আপনার জন্য ডিবাগ বিল্ডগুলিতে করবে (অবিশ্বাস্য বর্ণের ব্যবহার ধরতে সহায়তা করে)
- নিখরচায় ভরাট : একটি যাদুবিহীন -0 মানের সাথে মুক্ত মেমরিটি পূরণ করুন, বেশিরভাগ ক্ষেত্রে যদি এটি ডিফারেন্স করা হয় তবে সেগফ্ল্টটিকে ট্রিগার করার জন্য ডিজাইন করা হয়েছে (ঝুঁকির পয়েন্টার ধরতে সহায়তা করে)
- বিলম্বিত মুক্ত : কিছুক্ষণের জন্য মুক্ত মেমরিটি গাদাতে ফিরবেন না, এটিকে ভরাট করে রাখুন তবে উপলভ্য নয় (আরও ঝোলা পয়েন্টার ধরতে সহায়তা করে, আনুমানিক ডাবল-ফ্রিস ক্যাচ করে)
- ট্র্যাকিং : কোন বরাদ্দ কোথায় রেকর্ড করতে সক্ষম হওয়া কখনও কখনও দরকারী হতে পারে
মনে রাখবেন যে আমাদের স্থানীয় হোমব্রিউ সিস্টেমে (এম্বেডড টার্গেটের জন্য) আমরা ট্র্যাকিংটিকে অন্যান্য বেশিরভাগ স্টাফ থেকে আলাদা রাখি কারণ রান-টাইম ওভারহেড অনেক বেশি।
আপনি যদি এই বরাদ্দ ফাংশন / অপারেটরগুলি ওভারলোড করার জন্য আরও বেশি কারণে আগ্রহী হন, তবে "গ্লোবাল অপারেটরকে নতুন করে ওভারলোড করার কোনও কারণ কি?" আমার উত্তরটি একবার দেখুন ? ; নির্লজ্জ স্ব-প্রচারকে একপাশে রেখে, এটি এমন অন্যান্য কৌশলগুলি তালিকাভুক্ত করে যা হ্যাপ দুর্নীতির ত্রুটিগুলি সনাক্ত করতে এবং সেই সাথে অন্যান্য প্রয়োগযোগ্য সরঞ্জামগুলিও সহায়ক।
যেহেতু এমএস ব্যবহারের জন্য বরাদ্দ / ফ্রি / বেড়া মানগুলি অনুসন্ধান করার জন্য আমি এখানে আমার নিজের উত্তর অনুসন্ধান করতে থাকি, মাইক্রোসফ্ট dbgheap পূরণের মানগুলি অন্তর্ভুক্ত করে এমন আরও একটি উত্তর এখানে দেওয়া আছে ।