ডিবাগ প্ল্যাটফর্ম কোড

অ্যান্ড্রয়েড স্টুডিও ফর প্ল্যাটফর্ম (ASfP) একটি শক্তিশালী ডিবাগার প্রদান করে যা আপনাকে:

  • ডিবাগ করার জন্য একটি ডিভাইস নির্বাচন করুন।
  • আপনার জাভা, কোটলিন, সি/সি++ এবং রাস্ট কোডে ব্রেকপয়েন্ট সেট করুন।
  • রানটাইমে ভেরিয়েবল পরীক্ষা করুন এবং রাশি মূল্যায়ন করুন।

ডিবাগার ব্যবহার করার আগে, আপনাকে অবশ্যই আপনার বিল্ডটি একটি ডিভাইস বা এমুলেটরে ফ্ল্যাশ করতে হবে।

অ্যাপ প্রক্রিয়া (জাভা/কোটলিন) ডিবাগিং

জাভা বা কোটলিন অ্যাপ্লিকেশন প্রক্রিয়া ডিবাগ করতে:

  1. ASfP-এর মধ্যে আপনার জাভা বা কোটলিন কোডে ব্রেকপয়েন্ট সেট করুন।

  2. মেনু থেকে Run > Attach Debugger to Android Process নির্বাচন করুন।

  3. Choose Process ডায়ালগে, নিশ্চিত করুন যে Debug টাইপটি Java Only তে সেট করা আছে।

  4. তালিকা থেকে আপনার ডিভাইসটি নির্বাচন করুন।

  5. আপনি যে নির্দিষ্ট অ্যাপ্লিকেশন প্রক্রিয়াটি ডিবাগ করতে চান তা চয়ন করুন।

  6. ঠিক আছে ক্লিক করুন।

  7. ব্রেকপয়েন্টগুলিতে পৌঁছাতে আপনার ডিভাইসে অ্যাপ্লিকেশনটির সাথে ইন্টারঅ্যাক্ট করুন।

সিস্টেম প্রক্রিয়া (C/C++) ডিবাগিং

C অথবা C++ এ লেখা একটি সিস্টেম প্রক্রিয়া ডিবাগ করতে:

  1. আপনার কাছে শুধুমাত্র একটি ডিভাইস বা এমুলেটর চলছে কিনা তা যাচাই করুন।

  2. একটি টার্মিনাল খুলুন এবং আপনার AOSP চেকআউট রুট থেকে adb root চালান: bash adb root

  1. ASfP-এর মধ্যে আপনার C/C++ কোডে ব্রেকপয়েন্ট সেট করুন।

  2. মেনু থেকে Run > Attach Debugger to Android Process নির্বাচন করুন।

  3. Choose Process ডায়ালগে, Debug টাইপটি Native Only অথবা Dual (Java + Native) এ পরিবর্তন করুন।

  4. সিস্টেম প্রসেস দেখতে Show all processes বক্সটি চেক করুন।

  5. তালিকা থেকে আপনার ডিভাইসটি নির্বাচন করুন।

  6. আপনি যে নির্দিষ্ট সিস্টেম প্রক্রিয়াটি ডিবাগ করতে চান তা বেছে নিন (যেমন surfaceflinger অথবা system_server )।

  7. ঠিক আছে ক্লিক করুন।

  8. আপনার ব্রেকপয়েন্টগুলিতে পৌঁছাতে ডিভাইসটির সাথে ইন্টারঅ্যাক্ট করুন।

মরিচা ডিবাগিং

ASfP LLDB-এর সাথে ডিবাগ অ্যাডাপ্টার প্রোটোকল (DAP) ব্যবহার করে রাস্ট ডিবাগিং সমর্থন করে। এই বিভাগে কোডএলএলডিবিকে ডিবাগ অ্যাডাপ্টার সার্ভার হিসেবে কীভাবে সেট আপ করবেন এবং হোস্ট এবং অ্যান্ড্রয়েড ডিভাইসে রাস্ট কোড ডিবাগ করবেন তা বর্ণনা করা হয়েছে।

একটি ডিবাগ অ্যাডাপ্টার সার্ভার হিসেবে CodeLLDB সেট আপ করুন

  1. একটি নতুন ডিবাগ অ্যাডাপ্টার প্রোটোকল রান/ডিবাগ কনফিগারেশন তৈরি করুন:

    1. মেনু থেকে Run > Edit Configurations নির্বাচন করুন।
    2. + বোতামে ক্লিক করুন।
    3. ডিবাগ অ্যাডাপ্টার প্রোটোকল নির্বাচন করুন।
  2. সার্ভার ট্যাবে, একটি নতুন সার্ভার তৈরি করুন ক্লিক করুন।

  3. নতুন খোলা ডায়ালগে, টেমপ্লেট নির্বাচন করুন ক্লিক করুন এবং তালিকা থেকে CodeLLDB নির্বাচন করুন।

  4. CodeLLDB টেমপ্লেট নির্বাচন করার পর, একটি পূর্বনির্ধারিত কনফিগারেশন সহ নতুন সার্ভার যুক্ত করা হয়।

    1. ট্রেস ড্রপডাউন থেকে Verbose নির্বাচন করে ভার্বোস ট্রেসিং সক্ষম করুন।
    2. আপনার অ্যান্ড্রয়েড সোর্স প্রি-বিল্টে lldb-server এর পাথ নির্দিষ্ট করে এমন একটি পরিবেশ পরিবর্তনশীল যোগ করুন:
        LLDB_DEBUGSERVER_PATH=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/runtimes_ndk_cxx/x86_64/lldb-server
        ```
    
    Replace `REPO_ROOT` with the absolute path to your Android source checkout.
    To find `CLANG_VERSION`, run the `get_clang_version.py` script from the root of
    your Android source tree:
    
    ```bash
        ./build/soong/scripts/get_clang_version.py
    
    1. <<insert base directory>> বিভাগটি পরিবর্তন করবেন না

হোস্টে রাস্ট বাইনারি ডিবাগ করুন

  1. আপনার ডিবাগ অ্যাডাপ্টার প্রোটোকল রান/ডিবাগ কনফিগারেশনে কনফিগারেশন ট্যাবটি খুলুন।
  2. ডিবাগ মোড হিসেবে লঞ্চ নির্বাচন করুন।
  3. ওয়ার্কিং ডিরেক্টরি আপডেট করুন এবং আপনি যে বাইনারি ফাইলটি ডিবাগ করতে চান তা নির্বাচন করুন।
  4. কনফিগারেশন সংরক্ষণ করতে ঠিক আছে ক্লিক করুন।
  5. কনফিগারেশনের পাশে ডিবাগ আইকনে ক্লিক করে ডিবাগিং সেশন শুরু করুন।

প্রথমবার এটি চালানোর সময়, CodeLLDB ডাউনলোড হয়। আপনি কনসোলে DAP ট্রেস দেখতে পাবেন। আপনার রাস্ট কোডে সেট করা ব্রেকপয়েন্টগুলি প্রত্যাশা অনুযায়ী হিট হওয়া উচিত।

একটি অ্যান্ড্রয়েড ডিভাইসে রাস্ট বাইনারি ডিবাগ করুন (সংযুক্তি মোড)

  1. PID খুঁজুন: অ্যান্ড্রয়েড ডিভাইসে আপনি যে অ্যাপ্লিকেশনটি ডিবাগ করতে চান তার প্রসেস আইডি (PID) সনাক্ত করুন।

  2. ডিভাইসে lldb-server শুরু করুন: আপনার অ্যান্ড্রয়েড সোর্স ট্রি চেকআউটের রুট থেকে, lldbclient.py স্ক্রিপ্টটি চালান, <PID> এর পরিবর্তে প্রসেস আইডিটি দিন:

    lldbclient.py --setup-forwarding vscode-lldb -p <PID>
    

    এই স্ক্রিপ্টটি সঠিক lldb-server ডিভাইসে পুশ করে, এটি চালু করে, পোর্ট ফরওয়ার্ডিং সেট আপ করে (ডিভাইসে পোর্ট 5039 হোস্ট করে), এবং পরবর্তী পদক্ষেপের জন্য প্রয়োজনীয় DAP JSON কনফিগারেশন আউটপুট করে। এই টার্মিনালটি খোলা রাখুন।

  3. হোস্টে CodeLLDB ডিবাগ অ্যাডাপ্টার শুরু করুন:

    • CodeLLDB এক্সটেনশন ডিরেক্টরিতে নেভিগেট করুন (ডিফল্ট: ~/.lsp4ij/dap/codelldb/extension/adapter )।
    • প্রয়োজনীয় পরিবেশ ভেরিয়েবল সেট করুন এবং অ্যাডাপ্টার সার্ভার শুরু করুন, সার্ভার সেটআপে নির্ধারিত REPO_ROOT এবং CLANG_VERSION প্রতিস্থাপন করুন:
        # Sets PYTHONHOME env variable
        export PYTHONHOME=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3
    
        # Tell the dynamic linker where to find python libs
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3/lib
    
        # Starts the CodeLLDB Debugger Adapter server on port 1234
        ./codelldb --liblldb REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/lib/liblldb.so --port 1234
    
  4. ASfP DAP ক্লায়েন্ট কনফিগার করুন:

    1. ASfP-তে আপনার ডিবাগ অ্যাডাপ্টার প্রোটোকল রান/ডিবাগ কনফিগারেশনে ফিরে যান।
    2. কনফিগারেশন ট্যাবটি নির্বাচন করুন।
    3. ডিবাগ মোড " Attach" এ সেট করুন।
    4. ঠিকানাটি localhost এ সেট করুন।
    5. পোর্ট 1234 তে সেট করুন।
    6. lldbclient.py কমান্ড (ধাপ ২) থেকে JSON আউটপুটটি DAP প্যারামিটার (JSON) ফিল্ডে পেস্ট করুন।
  5. ডিবাগিং সেশন শুরু করতে ডিবাগ ক্লিক করুন।

সমস্যা সমাধান

  • যদি আপনি ত্রুটি error: Connection shut down by remote side while waiting for reply to initial handshake packet , বর্তমান ডিবাগ সেশনটি বন্ধ করুন এবং ডিভাইসে lldb-server এবং হোস্টে CodeLLDB অ্যাডাপ্টারটি পুনরায় চালু করুন।