নেটিভ মেমরি ব্যবহার ডিবাগ করা

অ্যাড্রেস স্যানিটাইজার: HWASan/ASan

অ্যান্ড্রয়েড প্ল্যাটফর্ম ডেভেলপাররা C/C++ এ মেমরি বাগ খুঁজে পেতে HWAddress Sanitizer (HWASan) ব্যবহার করে।

আপনি ci.android.com ( বিস্তারিত সেটআপ নির্দেশাবলী ) থেকে সমর্থিত পিক্সেল ডিভাইসগুলিতে পূর্বনির্মাণ করা HWASan ছবিগুলি ফ্ল্যাশ করতে পারেন।

যেহেতু অ্যান্ড্রয়েড 8.0 (ওরিও) নন-রুটেড প্রোডাকশন ডিভাইসে অ্যাপ ডিবাগ করতে ASan ব্যবহার করাও সম্ভব। আপনি ASan উইকিতে নির্দেশাবলী পেতে পারেন।

Heapprofd

Android 10 heaprofd সমর্থন করে, একটি লো-ওভারহেড, স্যাম্পলিং হিপ প্রোফাইলার। heapprofd আপনাকে আপনার প্রোগ্রামে কলস্ট্যাকগুলিতে নেটিভ মেমরি ব্যবহারকে বৈশিষ্ট্যযুক্ত করতে দেয়। আরও তথ্যের জন্য Perfetto ডকুমেন্টেশন সাইটে heaprofd - Android Heap Profiler দেখুন।

Malloc ডিবাগ

স্থানীয় মেমরি সমস্যাগুলির জন্য উপলব্ধ ডিবাগিং বিকল্পগুলির একটি পুঙ্খানুপুঙ্খ বিবরণের জন্য libc কলব্যাক ব্যবহার করে Malloc ডিবাগ এবং নেটিভ মেমরি ট্র্যাকিং দেখুন।

libmemun নাগালযোগ্য

Android এর libmemunreachable হল একটি শূন্য-ওভারহেড নেটিভ মেমরি লিক ডিটেক্টর। এটি একটি অনির্দিষ্ট মার্ক-এন্ড-সুইপ আবর্জনা সংগ্রাহক ব্যবহার করে সমস্ত নেটিভ মেমরির উপর দিয়ে যায়, যেকোনও অপাগ্য ব্লককে ফাঁস হিসাবে রিপোর্ট করে। ব্যবহারের নির্দেশাবলীর জন্য libmemun পৌঁছানোর যোগ্য ডকুমেন্টেশন দেখুন।

ম্যালোক হুক

আপনি যদি নিজের টুল তৈরি করতে চান, তাহলে অ্যান্ড্রয়েডের libc প্রোগ্রাম এক্সিকিউশনের সময় ঘটে যাওয়া সমস্ত বরাদ্দ/ফ্রি কল বাধা দিতেও সমর্থন করে। ব্যবহারের নির্দেশাবলীর জন্য malloc_hooks ডকুমেন্টেশন দেখুন।

Malloc পরিসংখ্যান

অ্যান্ড্রয়েড <malloc.h> -এ mallinfo(3) এবং malloc_info(3) এক্সটেনশন সমর্থন করে। malloc_info ফাংশনটি Android 6.0 (Marshmallow) এবং উচ্চতর সংস্করণে উপলব্ধ এবং এর XML স্কিমা Bionic-এর <malloc.h> এ নথিভুক্ত করা হয়েছে।

ডালভিক ডিবাগ মনিটর সার্ভার

ম্যালোক ডিবাগ আউটপুটের একটি গ্রাফিকাল ভিউ পেতে আপনি ডালভিক ডিবাগ মনিটর সার্ভার (DDMS) ব্যবহার করতে পারেন।

DDMS ব্যবহার করতে, প্রথমে এর নেটিভ মেমরি UI চালু করুন:

  1. ~/.android/ddms.cfg খুলুন
  2. লাইন যোগ করুন: native=true

DDMS পুনরায় চালু করার পরে এবং একটি প্রক্রিয়া নির্বাচন করার পরে, আপনি নতুন স্থানীয় বরাদ্দ ট্যাবে স্যুইচ করতে পারেন এবং এটিকে বরাদ্দের একটি তালিকা দিয়ে তৈরি করতে পারেন। এটি বিশেষত মেমরি লিক ডিবাগ করার জন্য দরকারী।