আপনি যদি সি, অবজেক্টিভ-সি বা সি ++ তে কোড করেন তবে ক্ল্যাং স্ট্যাটিক অ্যানালাইজারটি ব্যবহার করে আপনার উত্সটি চালিত না করেই সমালোচনা করতে পারেন।
কিছু মেমোরি ডিবাগিং সরঞ্জাম উপলব্ধ: ভ্যালগ্র্যান্ড, ম্যাক ওএস এক্সে গার্ড ম্যালোক, * এনআইএক্সে বৈদ্যুতিক বেড়া।
কিছু বিকাশ পরিবেশ ডিবাগিং মেমরি বরাদ্দকারীকে ব্যবহার করার বিকল্প সরবরাহ করে, যা নতুন বরাদ্দকৃত পৃষ্ঠাগুলি এবং আবর্জনা দ্বারা সদ্য মুক্ত পৃষ্ঠাগুলি পূরণ করা, অবিকৃত বিন্দু বিনষ্টকরণ সনাক্তকরণ এবং প্রতিটি হিপ ব্লকের আগে এবং পরে কিছু ডেটা লিখতে পারে, ডিবাগার থাকায় যদি তথ্যের পরিচিত প্যাটার্নটি কখনও পরিবর্তন হয় called
স্ল্যাশডোটের কিছু লোক বলেছিল যে কোনও একটি ডিবাগারে সোজা নতুন লাইনের উত্স থেকে তিনি প্রচুর মূল্য পেয়েছেন। "এটাই" তিনি বলেছিলেন। আমি সবসময় তাঁর পরামর্শ অনুসরণ করি না, তবে যখন আমার কাছে আসে তখন এটি আমার পক্ষে খুব সহায়ক হয়েছিল। এমনকি যদি আপনার কাছে কোনও অস্বাভাবিক কোডের পথটি উত্সাহিত করে এমন কোনও কেস না থাকে তবে আপনি নিজের ডিবাগারে একটি চলককে এ জাতীয় পাথ ধরে রাখতে পারেন, কিছু মেমরি বরাদ্দ করে বলতে পারেন, তারপরে ডিবাগারটি ব্যবহার করে আপনার নতুন পয়েন্টারটিকে NULL পরিবর্তে সেট করতে হবে মেমরি ঠিকানা, তারপর বরাদ্দ ব্যর্থতা হ্যান্ডলার মাধ্যমে পদক্ষেপ।
প্রতিস্থাপনগুলি ব্যবহার করুন - সি, সি ++ এবং অবজেক্টিভ-সি তে আসক্ত () ম্যাক্রো। যদি আপনার ভাষা কোনও দৃsert় ফাংশন সরবরাহ না করে তবে একটি নিজে লিখুন।
উদারপন্থী দাবী ব্যবহার করুন, তারপরে সেগুলি আপনার কোডে রেখে দিন। আমি দাবী () "পরীক্ষাটি পরীক্ষা চালিয়ে যায়" বলে ডাকি। আমি আমার বেশিরভাগ ফাংশনের এন্ট্রি পয়েন্টে পূর্বশর্ত পরীক্ষা করার জন্য এগুলি বেশিরভাগ ব্যবহার করি commonly এটি "প্রোগ্রামিং বাই কন্ট্রাক্ট" এর একটি অংশ যা আইফেল প্রোগ্রামিং ভাষায় নির্মিত। অন্য অংশটি হ'ল পোস্টকন্ডিশনস, এটি হ'ল ফাংশন রিটার্ন পয়েন্টগুলিতে দৃsert়তা () ব্যবহার করে, তবে আমি দেখতে পেলাম যে পূর্বশর্ত হিসাবে আমি তেমন মাইলেজ পাই না।
শ্রেণি আক্রমণকারীদের পরীক্ষা করতে আপনি দৃsert় ব্যবহারও করতে পারেন। যদিও কোনও শ্রেণীর জন্য কোনও আক্রমণকারীকে কঠোরভাবে আবশ্যক করা প্রয়োজন না, তবে বেশিরভাগ সংবেদনশীলভাবে ডিজাইন করা ক্লাসগুলি তাদের কাছে রয়েছে। শ্রেণি আগ্রাসন এমন কিছু শর্ত যা সদ্ব্যবস্থায় সদস্য ফাংশনগুলির অভ্যন্তর ব্যতীত অন্যথায় সত্য যা আপনার বস্তুকে সাময়িকভাবে একটি অসামঞ্জস্য অবস্থায় রাখতে পারে। এগুলি ফাংশনগুলিতে ফিরে আসার আগে সর্বদা ধারাবাহিকতা পুনরুদ্ধার করতে হবে।
সুতরাং প্রতিটি সদস্য ফাংশন প্রবেশ ও প্রস্থানের সময় আক্রমণকারীটিকে পরীক্ষা করতে পারে এবং ক্লাসটি চেক ইন্ভারিয়ান্ট নামে একটি ফাংশন সংজ্ঞায়িত করতে পারে যা অন্য কোনও কোড যে কোনও সময় কল করতে পারে।
আপনার উত্সের কোন রেখাগুলি আসলে পরীক্ষিত হচ্ছে তা যাচাই করতে একটি কোড কভারেজ সরঞ্জামটি ব্যবহার করুন, তারপরে পরীক্ষা না করা পরীক্ষাগুলি যা পরীক্ষা না করে পরীক্ষিত লাইনগুলিকে উত্সাহিত করে। উদাহরণস্বরূপ আপনি খুব কম শারীরিক মেমরির সাহায্যে কনফিগার করা ভিএম এর মধ্যে আপনার অ্যাপ্লিকেশন চালিয়ে লো মেমোরি হ্যান্ডলারগুলি পরীক্ষা করতে পারেন, এবং কোনও অদলবদল ফাইল বা খুব ছোট কোনও নয়।
(কোনও কারণে আমি কখনই প্রাইভেট ছিলাম না, যদিও বিওএস কোনও অদলবদল ফাইল ছাড়াই চালাতে পারত, এটি সেভাবে অত্যন্ত অস্থির ছিল the বিএফএস ফাইল সিস্টেম লিখেছেন ডমিনিক গিম্পাওলো আমাকে বিন্যাস ছাড়াই কখনও বিওএস না চালানোর আহ্বান জানিয়েছেন I কেন এটি গুরুত্বপূর্ণ তা দেখুন তবে এটি অবশ্যই একরকম বাস্তবায়ন কারুকার্য হয়ে দাঁড়িয়েছিল))
আই / ও ত্রুটির ক্ষেত্রে আপনার কোডের প্রতিক্রিয়াও পরীক্ষা করা উচিত। আপনার সমস্ত ফাইল একটি নেটওয়ার্ক শেয়ারে সংরক্ষণের চেষ্টা করুন, তারপরে আপনার অ্যাপ্লিকেশনটির উচ্চ চাপের সময় আপনার নেটওয়ার্ক কেবলটি সংযোগ বিচ্ছিন্ন করুন। একইভাবে তারটি সংযোগ বিচ্ছিন্ন করুন - বা আপনার ওয়্যারলেসটি বন্ধ করুন - যদি আপনি কোনও নেটওয়ার্কের সাথে যোগাযোগ করছেন।
একটি জিনিস যা আমি বিশেষভাবে অপ্রতিরোধ্য বলে মনে করি সেগুলি হ'ল এমন ওয়েবসাইটগুলি যার কাছে শক্তিশালী জাভাস্ক্রিপ্ট কোড নেই। ফেসবুকের পৃষ্ঠাগুলি কয়েক ডজন ছোট জাভাস্ক্রিপ্ট ফাইল লোড করে তবে তাদের মধ্যে কোনও একটি ডাউনলোড করতে ব্যর্থ হলে পুরো পৃষ্ঠাটি ভেঙে যায়। কিছুটা ত্রুটি সহিষ্ণুতা সরবরাহ করার উপায় আছে, একটি ডাউনলোড আবার চেষ্টা করে বলুন বা আপনার কিছু স্ক্রিপ্টগুলি ডাউনলোড না করে যখন কিছু ধরণের যুক্তিসঙ্গত ফ্যালব্যাক সরবরাহ করতে হবে।
আপনার অ্যাপ্লিকেশনটিকে ডিবাগারের সাহায্যে বা * এনআইএক্স-তে "কিল -9" দিয়ে হত্যা করার চেষ্টা করুন যখন এটি একটি বড়, গুরুত্বপূর্ণ ফাইলটি লেখার মাঝখানে রয়েছে। যদি আপনার অ্যাপটি ভাল-আর্কিটেটেড থাকে তবে পুরো ফাইলটি লিখিত হয়ে যাবে বা একেবারেই লেখা হবে না, অথবা এটি কেবলমাত্র আংশিকভাবে লিখিত থাকলে কী লিখিত হয় তা ক্ষতিগ্রস্ত হবে না, কোন ডেটা যা সংরক্ষণ করা হয়েছে তা সম্পূর্ণরূপে ব্যবহারযোগ্য হবে ফাইলটি পুনরায় পড়ার পরে অ্যাপ্লিকেশনটি।
ডাটাবেসগুলিতে সর্বদা ত্রুটি-সহনশীল ডিস্ক থাকে I / O, তবে অন্য কোনও অ্যাপ্লিকেশন খুব কমই করে। যখন যাত্রাযুক্ত ফাইল সিস্টেমগুলি বিদ্যুৎ ব্যর্থতা বা ক্রাশের ঘটনায় ফাইল সিস্টেমের দুর্নীতি রোধ করে, তারা দুর্নীতি বা শেষ ব্যবহারকারীর ডেটা হ্রাস রোধ করার জন্য কিছুই করে না। এটি ব্যবহারকারীর অ্যাপ্লিকেশনগুলির দায়িত্ব, তবে ডাটাবেস ব্যতীত অন্য কোনও ফল্ট ফলস-সহনশীলতা প্রয়োগ করে।