ডিবাগার ব্যবহার করা হচ্ছে

ব্যবহার করে এই পাতা বিস্তারিত LLDB বা , GDB ওএস উন্নয়নের জন্য। অ্যাপ্লিকেশন উন্নয়ন জন্য, দেখুন ডিবাগ আপনার অ্যাপ পরিবর্তে, যা ব্যাখ্যা করে অ্যান্ড্রয়েড স্টুডিও গুই (LLDB উপর ভিত্তি করে) কীভাবে ব্যবহার করবেন তা।

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

পূর্বশর্ত

একটি ডিবাগার ব্যবহার করতে:

  • স্বাভাবিক সঙ্গে বিল্ড পরিবেশ সেট আপ করুন envsetup.sh কমান্ড।
  • একই চালান lunch কমান্ড আপনাকে যখন বিল্ডিং ব্যবহৃত।

আপনার পরিবেশ সেট আপ আরও সহায়তার জন্য, দেখুন পরিবেশ সেট আপ

চলমান অ্যাপ বা প্রক্রিয়া ডিবাগ করা

একটি চলমান অ্যাপ্লিকেশান বা নেটিভ ডেমন, ব্যবহার সাথে সংযোগ স্থাপন করতে gdbclient.py একটি PID সঙ্গে। উদাহরণস্বরূপ, PID 1234 দিয়ে প্রক্রিয়াটি ডিবাগ করতে, হোস্টে এটি চালান:

gdbclient.py -p 1234

স্ক্রিপ্ট পোর্ট ফরওয়ার্ডিং সেট করে, ডিভাইসে যথাযথ রিমোট ডিবাগিং স্টাব শুরু করে, হোস্টে ডিবাগার শুরু করে, প্রতীক খুঁজে পেতে কনফিগার করে এবং রিমোট ডিবাগিং স্টাবের সাথে সংযুক্ত করে।

নেটিভ প্রসেস স্টার্টআপ ডিবাগিং

একটি প্রক্রিয়া ডিবাগ করার যেমন শুরু হয়, ব্যবহার gdbclient.py সঙ্গে -r বিকল্প। উদাহরণস্বরূপ, ডিবাগ করার ls /bin , হোস্ট এই সঞ্চালন করুন:

gdbclient.py -r /system/bin/ls /bin

তারপর, লিখুন continue ডিবাগার এর প্রম্পটে।

ডিবাগিং অ্যাপ স্টার্টআপ

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

অ্যাপ স্টার্টআপ ডিবাগ করার জন্য, সেটিংসে ডেভেলপার অপশন ব্যবহার করে অ্যাপটিকে একটি জাভা ডিবাগার সংযুক্ত করার জন্য অপেক্ষা করার নির্দেশ দিন:

  1. সেটিংস> বিকাশকারী বিকল্পগুলি> নির্বাচন ডিবাগ অ্যাপ্লিকেশনে যান এবং তালিকা থেকে আপনার অ্যাপ্লিকেশন বেছে নিন, তারপর ডিবাগার জন্য অপেক্ষা ক্লিক করুন।
  2. APP শুরু হয় লঞ্চার থেকে বা চালানোর জন্য কম্যান্ড লাইন ব্যবহার করার মাধ্যমে:
    adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
    
  3. অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন এবং একটি ডায়ালগ প্রদর্শিত হবে যা আপনাকে বলে যে অ্যাপটি একটি ডিবাগারের জন্য অপেক্ষা করছে।
  4. সংযুক্ত করুন gdbserver / gdbclient স্বাভাবিকভাবে, সেট ব্রেকপয়েন্ট, তারপর প্রক্রিয়া চালিয়ে যান।

অ্যাপটি চলতে দিতে, একটি জাভা ডিবাগ ওয়্যার প্রোটোকল (JDWP) ডিবাগার সংযুক্ত করুন যেমন জাভা ডিবাগার (jdb):

adb forward tcp:12345 jdwp:XXX  # (Where XXX is the PID
of the debugged process.)
jdb -attach localhost:12345

ডিবাগিং অ্যাপ বা প্রক্রিয়া যে ক্র্যাশ

আপনি যদি চান debuggerd ক্র্যাশ প্রসেস স্থগিত করার যাতে আপনি একটি ডিবাগার সংযুক্ত করতে পারেন, যথাযথ সম্পত্তি সেট করুন:

  • পরে অ্যানড্রইড 11
    adb shell setprop debug.debuggerd.wait_for_debugger true
    
  • অ্যান্ড্রয়েড 11 এবং নিম্ন
    adb shell setprop debug.debuggerd.wait_for_gdb true
    
  • কে Android 6.0 Marshmallow এ এবং নিম্ন
    adb shell setprop debug.db.uid 999999
    

স্বাভাবিক ক্র্যাশ আউটপুট শেষে, debuggerd কপি প্রদান করে এবং দেখাচ্ছে ডিবাগার সংযোগ কিভাবে প্রক্রিয়া ক্র্যাশ করার Logcat নির্দেশাবলী পেস্ট করুন।

প্রতীক ছাড়া ডিবাগ করা

32 বিট এআরএম, আপনি যদি চিহ্ন নেই, gdb নির্ধারণ করতে পারি না যা নির্দেশ সেট এটা disassembling এর (এআরএম বা বুড়ো আঙ্গুলের)। প্রতীক তথ্য অনুপস্থিত থাকাকালীন ডিফল্ট হিসাবে নির্বাচিত নির্দেশ সেট নির্দিষ্ট করতে, নিম্নলিখিত বৈশিষ্ট্য সেট করুন:

set arm fallback-mode arm  # or thumb

ভিএস কোড দিয়ে ডিবাগিং

LLDB উপর প্ল্যাটফর্ম কোড ডিবাগ সমর্থন ভিসুয়াল স্টুডিও কোড । ডিভাইসে চলমান নেটিভ কোড নিয়ন্ত্রণ ও ডিবাগ করার জন্য আপনি LLDB CLI ইন্টারফেসের পরিবর্তে VS কোড ডিবাগার ফ্রন্টএন্ড ব্যবহার করতে পারেন।

ডিবাগ করার জন্য বনাম কোড ব্যবহারের আগে, ইনস্টল CodeLLDB এক্সটেনশন

VS কোড ব্যবহার করে কোড ডিবাগ করতে:

  1. নিশ্চিত করুন সব বিল্ড নিদর্শন (যেমন প্রতীক হিসেবে) চালানোর জন্য প্রয়োজনীয় যে gdbclient.py বা lldbclient.py উপস্থিত থাকে।
  2. চালান নিম্নলিখিত কমান্ড প্রয়োগ করুন:
    lldbclient.py --setup-forwarding
          vscode-lldb ANY_OTHER_FLAGS -p pid | -n proc-name | -r ...

    এই একটি JSON বস্তু ছাপে এবং lldbclient.py চলমান চলতে থাকে। এটি প্রত্যাশিত; হত্যা করো না lldbclient.py প্রোগ্রাম।

    -r পতাকা গত পতাকা হতে হবে যদি এটি কিভাবে পতাকা টুল দ্বারা পার্স করা হয় উপস্থিত হয়েছে।

  3. বনাম কোড, নির্বাচন করুন কনফিগারেশনে ডিবাগ ট্যাবে, তারপর LLDB নির্বাচন: কাস্টম চালু করুন। এই প্রর্দশিত launch.json ফাইল এবং একটি তালিকায় একটি নতুন JSON বস্তু যোগ করা হয়েছে।
  4. নতুন যোগ করা ডিবাগার কনফিগারেশন মুছুন।
  5. JSON বস্তু দ্বারা মুদ্রিত কপি lldbclient.py এবং এটি অবজেক্ট আপনি এইমাত্র মুছেছেন আটকে দিন। পরিবর্তনগুলি সংরক্ষণ করুন।
  6. ডিবাগার তালিকা, Ctrl + Shift + + P এবং টাইপ রিফ্রেশ করতে উইন্ডোটি পুনঃলোড করার reload window
  7. নতুন ডিবাগার কনফিগারেশন এবং প্রেস রান নির্বাচন করুন। ডিবাগারটি 10 ​​থেকে 30 সেকেন্ডের পরে সংযোগ করা উচিত।
  8. যখন তুমি সম্পন্ন ডিবাগিং, টার্মিনাল চলমান যেতে lldbclient.py এবং প্রেস শেষ করতে Enter lldbclient.py প্রোগ্রাম।