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

ঠিকানা স্যানিটাইজার: HWASan/ASan

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

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

অ্যান্ড্রয়েড ৮.০ (ওরিও) থেকে, রুটবিহীন প্রোডাকশন ডিভাইসেও অ্যাপ ডিবাগ করার জন্য ASan ব্যবহার করা সম্ভব। আপনি ASan উইকিতে এর নির্দেশাবলী খুঁজে পেতে পারেন।

হিপপ্রোফড

অ্যান্ড্রয়েড ১০ হিপপ্রফডি (heapprofd) সমর্থন করে, যা একটি স্বল্প-ওভারহেডের স্যাম্পলিং হিপ প্রোফাইলার। হিপপ্রফডি আপনাকে আপনার প্রোগ্রামের কলস্ট্যাকগুলিতে নেটিভ মেমরি ব্যবহারের কারণ নির্ধারণ করতে দেয়। আরও তথ্যের জন্য পারফেট্টো ডকুমেন্টেশন সাইটে 'হিপপ্রফডি - অ্যান্ড্রয়েড হিপ প্রোফাইলার' দেখুন।

ম্যালক ডিবাগ

নেটিভ মেমরি সংক্রান্ত সমস্যার জন্য উপলব্ধ ডিবাগিং বিকল্পগুলির বিশদ বিবরণের জন্য `Malloc Debug and Native Memory Tracking using libc Callbacks` দেখুন।

libmemunreachable

অ্যান্ড্রয়েডের libmemunreachable হলো একটি জিরো-ওভারহেড নেটিভ মেমরি লিক ডিটেক্টর। এটি সমস্ত নেটিভ মেমরির উপর একটি ইমপ্রিসাইজ মার্ক-অ্যান্ড-সুইপ গার্বেজ কালেক্টর পাস ব্যবহার করে এবং যেকোনো আনরিচেবল ব্লককে লিক হিসাবে রিপোর্ট করে। ব্যবহারের নির্দেশাবলীর জন্য libmemunreachable ডকুমেন্টেশন দেখুন।

ম্যালক হুক

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

ম্যালক পরিসংখ্যান

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

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

Malloc Debug আউটপুটের গ্রাফিক্যাল ভিউ পেতে আপনি Dalvik Debug Monitor Server (DDMS)- ও ব্যবহার করতে পারেন।

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

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

DDMS পুনরায় চালু করে একটি প্রসেস নির্বাচন করার পর, আপনি নতুন নেটিভ অ্যালোকেশন ট্যাবে যেতে পারেন এবং সেখানে অ্যালোকেশনের একটি তালিকা যুক্ত করতে পারেন। মেমরি লিক ডিবাগ করার জন্য এটি বিশেষভাবে কার্যকর।