Android Studio for Platform (ASfP) Debug টুল উইন্ডোতে অ্যাটাচ ট্যাবের আশেপাশে মাল্টি-ল্যাঙ্গুয়েজ প্ল্যাটফর্ম ডিবাগিং ইন্টিগ্রেট করে:
- Java ডিবাগার, নেটিভ ডিবাগার (বান্ডেল করা LLDB) অথবা দু'টিই কোনও ফিজিক্যাল ডিভাইস বা Cuttlefish ভার্চুয়াল ডিভাইসে রান করা অ্যাপ বা সিস্টেম প্রসেসে অ্যাটাচ করতে, রান করুন > Android প্রসেসে অ্যাটাচ করুন (Control+Alt+A) বিকল্প বেছে নিন।
- অ্যাটাচ করার আগে, লোড করা প্রতিটি শেয়ার করা লাইব্রেরি (
.so) এবং এর আট-ক্যারেক্টারের ELF বিল্ড আইডি লাইব্রেরি প্যানেলে—চেকমার্ক আইকন সহ, যাout/target/product/<device>/symbols-এর অধীনে ম্যাচ করা লোকাল ডিবাগ সিম্বল যাচাই করে—ভাল করে দেখে নিন। - টুলবার থেকে ডিভাইসের পূর্বশর্ত ম্যানেজ করুন: সিস্টেম প্রসেস
দেখাও বিকল্প দিয়ে ফিল্টার করুন,
adb rootরান করাতে রুট করা ডিভাইস বিকল্পে ক্লিক করুন (অ্যাক্টিভ থাকলে ডিভাইস রুট করা আছে দেখাবে) এবংuserdebugবিল্ডে JDWP চালু করতে JDWP চালু করুন বিকল্পে ক্লিক করুন। - কন্ডিশনাল ও ব্যতিক্রম ব্রেকপয়েন্ট সেট করুন, এডিটরে ইনলাইন ভেরিয়েবল ভ্যালু দেখুন, ড্রপ ফ্রেম ও স্মার্ট স্টেপ ইনটু ব্যবহার করুন এবং রানটাইমে স্ট্রাকচার্ড C++ ও Rust টাইপ পরীক্ষা করুন।
ডিবাগার ব্যবহার করার আগে, আপনার lunch টার্গেট বিল্ড করুন যাতে লোকাল
out/target/product/<device>/symbols/.build-id সিম্বল ইনডেক্স থাকে এবং ম্যাচিং ডিভাইস ইমেজ ফ্ল্যাশ
বা লঞ্চ করুন।
Java এবং ডুয়াল Java ও নেটিভ ডিবাগিং
Java বা Kotlin অ্যাপ্লিকেশন, সিস্টেম অ্যাপ (যেমন
com.android.messaging, সেটিংস বা SystemUI) অথবা JNI
এবং C++ বা Rust কোডে কল করা প্রসেস ডিবাগ করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
- আপনার Java, Kotlin, C, C++ বা Rust সোর্স ফাইলে ব্রেকপয়েন্ট সেট করুন।
- রান করুন > Android প্রসেসে অ্যাটাচ করুন (Control+Alt+A) বিকল্প বেছে নিন। ASfP, Debug টুল উইন্ডোর মধ্যে একটি পিন করা অ্যাটাচ করুন ট্যাব খোলে।
- ডিভাইস ড্রপ-ডাউন মেনু থেকে আপনার টার্গেট ডিভাইস বেছে নিন।
userdebugবিল্ডে JDWP চালু করা না থাকলে, JDWP চালু করুন বিকল্পে ক্লিক করুন—ASfPpersist.debug.dalvik.vm.jdwp.enabled=1সেট করে ডিভাইসটি রিবুট করে। চালু করা থাকলে, বোতামটি JDWP চালু করা আছে হিসেবে দেখায় এবং রাইট-ক্লিক করলে JDWP বন্ধ করুন অ্যাকশন দেখা যায়। - টেবিল থেকে টার্গেট প্রসেস বেছে নিন (Java ও ART প্রসেসে কফি-কাপ আইকন দেখানো হয়)।
- অ্যাটাচ করুন ট্যাবের নিচে, Java ডিবাগার, নেটিভ
ডিবাগার অথবা দু'টিই বেছে নিন। দুটিই বেছে নিলে Debug
টুল উইন্ডোতে দুটি লিঙ্ক করা ট্যাব খুলবে:
<process> (<pid>)বিল্ট-ইন LLDB-এর জন্য এবং<process> (<pid>)-jdwpJava-এর জন্য। দুটি সেশনের লাইফসাইকেল একে অপরের সাথে যুক্ত, তাই যেকোনও একটি সেশন বন্ধ করলে দুটিই বন্ধ হয়ে যায়। - অ্যাটাচ করুন বিকল্পে ক্লিক করুন এবং আপনার ডিভাইসে অ্যাপের সাথে ইন্টার্যাক্ট করে ব্রেকপয়েন্টে পৌঁছান।

সিস্টেম প্রসেস (C এবং C++) ডিবাগিং ও প্রতীক যাচাইকরণ
সিস্টেম ডেমোন, HAL বা সিস্টেম পরিষেবা (যেমন
android.hardware.bluetooth-service.cuttlefish, surfaceflinger বা
audioserver) ডিবাগ করতে, নিম্নলিখিত ধাপগুলি সম্পূর্ণ করুন:
- রান > Android প্রসেসে অ্যাটাচ করুন (Control+Alt+A) বিকল্প খুলুন। টুলবারে
রুট করা ডিভাইস দেখালে, ASfP রান করাতে
adb rootএবং ডিভাইস রুট করা আছে দেখাতে সেটিতে ক্লিক করুন। - সবচেয়ে উপরের টুলবারে সিস্টেম প্রসেস দেখুন বিকল্প বেছে নিন এবং আপনার টার্গেট প্রসেসের জন্য ফিল্টার করুন।
- লাইব্রেরি প্যানেলে লোকাল ডিবাগ সিম্বল যাচাই করুন: কোনও প্রসেস বেছে নিলে
লাইব্রেরি টেবিলে প্রসেসে লোড করা প্রতিটি ELF শেয়ার করা লাইব্রেরি (
.so) এবং এর ELF-এর প্রথম আটটি হেক্সাডেসিমেল অক্ষর বিল্ড আইডি অটো-ফিল হয়ে যায়। ASfP প্রতিটি বিল্ড আইডিকেout/target/product/<device>/symbols(symbols/.build-idহল APEX-এর মধ্যে লাইব্রেরি সমাধান করার জন্য প্রয়োজনীয়):- যাচাই করা লাইব্রেরিতে চেকমার্ক আইকন দেখানো হয়। সমাধান করা হয়েছে এমন যেকোনও সারিতে পয়েন্টার নিয়ে যান
সেটির সম্পূর্ণ লোকাল
.debugপ্রতীক পাথ প্রিভিউ করতে। - ম্যাচিং লোকাল প্রতীক না থাকা সমাধান না হওয়া লাইব্রেরি একটি সতর্কতা আইকন দেখায়।
- যাচাই করা লাইব্রেরিতে চেকমার্ক আইকন দেখানো হয়। সমাধান করা হয়েছে এমন যেকোনও সারিতে পয়েন্টার নিয়ে যান
সেটির সম্পূর্ণ লোকাল
- নন-জাভা প্রসেস শনাক্তকরণ: আপনি কোনও C++ বা Rust প্রসেস বেছে নিলে
(ষড়ভুজ
Cআইকন দিয়ে চিহ্নিত করা হয়), ASfP জাভা ডিবাগার লুকিয়ে দেয় এবং নেটিভ ডিবাগার চেক করা অবস্থায় রেখে জাভা ডিবাগিং উপলভ্য নেই, এটি জাভা প্রসেস নয় মেসেজ দেখায়। - আপনার C, C++ বা Rust সোর্স ফাইলে ব্রেকপয়েন্ট সেট করুন, অ্যাটাচ করুন বিকল্পে ক্লিক করুন এবং ডিভাইসে কোড পাথ ট্রিগার করুন।

Rust কোড ডিবাগ করা
ASfP, C
ও C++-এর জন্য ব্যবহৃত একই বিল্ট-ইন LLDB ডিবাগার দিয়ে Rust প্ল্যাটফর্ম কোড ডিবাগ করে। কোনও এক্সটার্নাল অ্যাডাপ্টার বা ম্যানুয়াল সার্ভার সেট-আপের প্রয়োজন নেই: ASfP, এর বান্ডেল করা টুলচেন থেকে
lldb-dap ব্যবহার করে এবং আপনার AOSP প্রি-বিল্ট থেকে Rust
প্রিটি-প্রিন্টার অটোমেটিক লোড করে, যাতে String, Vec,
HashMap ও Option-এর মতো স্ট্যান্ডার্ড টাইপ ভেরিয়েবল প্যানেলে স্ট্রাকচার করা ভ্যালু দেখাতে পারে।
ডিভাইসে চলমান Rust প্রসেসে অ্যাটাচ করা
সিস্টেম প্রসেস (C এবং C++) ডিবাগিং-এ উল্লেখ করা ধাপগুলি অনুসরণ করুন: রান করুন > Android প্রসেসে অ্যাটাচ করুন বিকল্প খুলুন, ডিভাইস রুট করা আছে এবং লোকাল সিম্বল যাচাই করুন, লাইব্রেরি প্যানেলে একটি চেকমার্ক দেখা যাবে, নেটিভ ডিবাগার বিকল্পে টিকচিহ্ন দিন এবং অ্যাটাচ করুন বিকল্পে ক্লিক করুন। একই ডিবাগ সেশনে Rust এবং C বা C++ স্ট্যাক ফ্রেম একসাথে দেখা যায়।
rust_test বা rust_test_host মডিউল ডিবাগ করা
rust_testবাrust_test_hostটার্গেট ঘোষণা করাAndroid.bpফাইলটি খুলুন এবং মডিউল টাইপের পাশে গটারে থাকা রান আইকনে ক্লিক করুন।- '<ModuleName>' ডিবাগ করুন বিকল্প বেছে নিন। ASfP টার্গেট তৈরি করে, আপনার হোস্ট মেশিন বা কানেক্ট করা ডিভাইসে LLDB-এর অধীনে টেস্ট বাইনারি লঞ্চ করে এবং আপনার Rust ব্রেকপয়েন্টে পজ করে।
- কোনও একটি টেস্ট ফাংশন ডিবাগ করতে বা LLDB স্টার্ট-আপ কমান্ড কাস্টমাইজ করতে, রান করুন > কনফিগারেশন এডিট করুন বিকল্প খুলুন, জেনারেট করা Soong টেস্ট কনফিগারেশন বেছে নিন এবং মেথড সেট করুন অথবা ডিবাগার বিকল্প বড় করুন। Soong Test কনফিগারেশন বিকল্প সম্পর্কে আরও জানতে, atest-এর মাধ্যমে টেস্ট প্ল্যাটফর্ম কোড দেখুন।
