* নিক্স সিস্টেমে একটি বড় সি / সি ++ কোডে মেমরি সম্পর্কিত সমস্যাটিকে কীভাবে ট্র্যাক / ফিক্স করা যায়


9

মেমরি সম্পর্কিত সমস্যা ট্র্যাক করার সময় আপনি কোন কৌশলটি ব্যবহার করেন? মেমরি ফাঁস, মেমরির দুর্নীতি ইত্যাদি সনাক্ত করতে আপনি কোন সরঞ্জামগুলি (ওপেন সোর্স পাশাপাশি মালিকানার) ব্যবহার করেন? কোনও সিস্টেমে কেবল জিডিবি / ডিবিএক্স উপলব্ধ থাকলে আপনি কীভাবে মেমরি ফাঁস ট্র্যাক করবেন?

আমার জন্য, শুধুমাত্র একটি ডিবাগার দিয়ে মেমরি ফাঁস ফিক্স করা খুব শক্ত।


2
ব্যক্তিগতভাবে আমি মনে করি এই প্রশ্নটি ইউনিক্স সম্পর্কিত সম্পর্কিত আরও প্রোগ্রামিং সম্পর্কিত।
ফুনেহে

উত্তর:


12

যদি আপনি উত্স কোডটি পরিবর্তন করতে পারেন, ডম্ললোক দুর্দান্ত; এটি চিহ্নিত করবে যে কোন পয়েন্টারগুলি মুক্ত করা হয়নি এবং (ডিবাগিং প্রতীকগুলির সাথে নির্মিত কোডের জন্য) ঠিক কোন লাইনে তাদের বরাদ্দ করা হয়েছিল।

যদি আপনি না পারেন তবে ভালগ্র্যান্ড সেই ধরণের জিনিসটির জন্য বেশ মানক। আমি সাধারণত ভালগ্রিন্ডটি ব্যবহার করা কিছুটা কঠিন বলে মনে করি তবে এতে আরও বৈশিষ্ট্য রয়েছে এবং এটি আপনার কোডে ড্যামলোক কল যুক্ত করার সাথে জড়িত নয়


dmalloc খুব বড় সিস্টেমে যেমন প্রত্যাশিত তেমন পারফর্মেন্ট হয় না। ভালগ্রাইন্ড একটি ভাল বাজি, এবং এমনকি সেখানে আপনি বাধা

valgrind --tool memcheck "yourapp" রানটাইমে মেমরি সম্পর্কিত তথ্য দেয় (ডেস্কটপ সিস্টেমে দরকারী)। আর একটি দুর্দান্ত সরঞ্জাম হ'ল মেমওয়াচ তবে এটি আপনার উত্স সহ সংকলিত হওয়া উচিত। মেমওয়াচ এম্বেড থাকা সিস্টেমগুলির জন্য আরও উপযুক্ত এমন কোনও ফাইলে বিশদ লগ করতে পারে।
rajaganesh87


2

ম্যাসিফ (ভালগ্রাইন্ড থেকে) মেমরি ফুটো আবিষ্কারের অন্যতম সেরা উপায়। আপনার সন্দেহজনক কোডটি পুনরাবৃত্তি করুন (বা আপনার প্রোগ্রামটি যথেষ্ট দিন চালনা করুন) এবং এমএস_প্রিন্টের সাথে ফলাফলটি ফেলে দিন। সাধারণত, কল স্ট্যাক আপনাকে এটি ঠিক করার জন্য পর্যাপ্ত তথ্য দিচ্ছে।

জিডিবি দিয়ে আপনি একটি চলমান প্রোগ্রামের সাথে সংযুক্ত করার চেষ্টা করতে পারেন এবং যেমন ফাংশনগুলিতে কল করতে পারেন malloc_stats()

আপনার প্রোগ্রামটি যদি অন্য ভাষায় লেখা হয় তবে এটি আরও জটিল। সম্প্রতি কিছু জিডিবি স্ক্রিপ্টযোগ্যতা অর্জন করেছে এবং লোকেরা জিডিবি-হ্যাপের মতো আকর্ষণীয় প্রকল্প শুরু করেছে যা কোর ডাম্প থেকে পাইথন স্মৃতি বিশ্লেষণ করতে পারে। অনুরূপ মেমরি অ্যানালাইসিস স্ক্রিপ্টগুলি সি ++ অবজেক্টগুলির পক্ষে সম্ভব হতে পারে।

আরও পড়ুন /programming/2564752/examining-cc-heap-memory-statistics-in-gdb


1

সোলারিসের জন্য, এই স্ট্যাকওভারফ্লো প্রশ্নের উত্তরগুলিতে তালিকাভুক্ত বেশ কয়েকটি সরঞ্জাম রয়েছে ( এগুলিতে খারাপ স্মৃতি অ্যাক্সেসের অন্যান্য ফর্মের সাথে ফাঁস চেক করা অন্তর্ভুক্ত)।


1

আমি কিছু সময়ের জন্য অবজেক্টিভ-সি করছি, এবং এমন একটি বিশ্লেষক আছেন যা সি লেভেল মেমরি পরিচালনা এবং সেই জাতীয় স্টাফের সাথে কাজ করে। ক্ল্যাং স্ট্যাটিক অ্যানালাইজার এতটাই ভাল যে অ্যাপল তাদের এক্সকোড আইডিই দিয়ে এটি বান্ডিল করার সিদ্ধান্ত নিয়েছে। এটি আপনার প্রশ্নের পক্ষে উপযুক্ত কিনা তা আমি নিশ্চিত নই, তবে আপনি যদি সি করছেন তবে এটি চেষ্টা করার মতো।


মাইনর কুইবল: বিড়াল শুরু থেকেই এক্সকোডে ব্যবহারের জন্য তৈরি হয়েছিল। Clang.llvm.org/clang_video-05-25-2007.html
ড্যানিয়েল জেমস

হাই ড্যানিয়েল, এটি সত্য হতে পারে তবে এটি এক্সকোডে অন্তর্ভুক্ত ছিল না যতক্ষণ না পর্যন্ত (বা অ্যাপল থেকে ডাউনলোড করা বান্ডেলে অন্তত নয়)
ফোনেহেহে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.