adb কমান্ড দিয়ে ট্রেস ক্যাপচার করুন

আপনি ডিবাগ বিল্ডে (অর্থাৎ, userdebug এবং eng বিল্ড) adb কমান্ড লাইন ব্যবহার করে উইনস্কোপ ট্রেস সংগ্রহ করতে পারেন। adb দিয়ে উইনস্কোপ ট্রেস সংগ্রহ করার আগে, adb root চালান।

অ্যান্ড্রয়েড ১৫ থেকে, উইনস্কোপ ট্রেসগুলো পারফেটোর সাথে সমন্বিত করা হয়েছে এবং পারফেটটো কমান্ড লাইন ব্যবহার করে সংগ্রহ করা হয়। প্রতিটি উইনস্কোপ ট্রেস হলো পারফেটোর একটি ডেটা সোর্স, যার নিজস্ব কনফিগারেশন রয়েছে। আপনি কনফিগারেশনগুলো আলাদাভাবে অথবা একটি একক ট্রেসিং সেশনে সক্রিয় করতে পারেন।

অ্যান্ড্রয়েড ১৪ এবং এর নিচের সংস্করণগুলোতে, প্রতিটি উইনস্কোপ ট্রেসের জন্য আলাদা কমান্ড থাকে এবং আপনি প্রতিটি আলাদাভাবে সংগ্রহ করতে পারেন। আরও তথ্যের জন্য ‘অ্যান্ড্রয়েড ১৪ এবং এর নিচের সংস্করণগুলোতে ট্রেস ক্যাপচার’ দেখুন।

উইন্ডোম্যানেজার

এই ট্রেস টাইপের জন্য ডেটা সোর্স নেম হিসেবে android.windowmanager ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

  • লগ লেভেল ( log_level ): লগের বিশদ বিবরণ নির্দিষ্ট করে। সমর্থিত মানসমূহ:

    • LOG_LEVEL_VERBOSE : সর্বাধিক পরিমাণ তথ্য সহ সমস্ত উপাদান লগ করে।
    • LOG_LEVEL_DEBUG : সমস্ত উপাদান লগ করে কিন্তু সমস্ত কনফিগারেশন ডেটা লেখে না।
    • LOG_LEVEL_CRITICAL : ন্যূনতম পারফরম্যান্স ওভারহেড সহ শুধুমাত্র দৃশ্যমান উপাদানগুলো লগ করে।
  • লগ ফ্রিকোয়েন্সি ( log_frequency ) : আইটেমগুলি কত ঘন ঘন লগ করা হবে তা নির্ধারণ করে:

    • LOG_FREQUENCY_FRAME : একটি ফ্রেম কমিট করার সময় স্টেট স্ন্যাপশট ট্রেস করে।
    • LOG_FREQUENCY_TRANSACTION : প্রতিবার একটি ট্রানজ্যাকশন কমিট হওয়ার সময় স্টেট স্ন্যাপশট ট্রেস করে।
    • LOG_FREQUENCY_SINGLE_DUMP : ডেটা সোর্স চালু হওয়ার সময় একক অবস্থার স্ন্যাপশট ট্রেস করে।

কনফিগারেশন মান সম্পর্কে বিস্তারিত জানতে উইন্ডো ম্যানেজার দেখুন।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য WindowManager ট্রেস টাইপটি দেখায়:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.windowmanager"
           windowmanager_config: {
              log_level: LOG_LEVEL_VERBOSE
              log_frequency: LOG_FREQUENCY_TRANSACTION
           }
       }
   }
EOF

প্রোটোলগ

এই ট্রেস টাইপের জন্য android.protolog ডেটা সোর্স নামটি ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

ট্রেসিং মোড ( tracing_mode ) : কোন লগ কনফিগারেশন ব্যবহার করা হবে তা নির্ধারণ করে:

  • DEFAULT : শুধুমাত্র group_overrides এ নির্দিষ্ট করা লগ গ্রুপ এবং লেভেলগুলো ট্রেস করে।
  • ENABLE_ALL : group_overrides এ নির্দিষ্ট করা না থাকলে, সমস্ত লগ গ্রুপ এবং লেভেল ট্রেস করে।

সর্বনিম্ন লগ লেভেল ( default_log_from_level ) : যদি এটি সেট করা থাকে, তবে কোনো গ্রুপ ওভাররাইড নির্দিষ্ট করা না থাকলে, এই লেভেলের চেয়ে উচ্চতর এবং এই লেভেল সহ যেকোনো মেসেজ ট্রেস করা হয়। উদাহরণস্বরূপ, সমস্ত লগ চালু না করেই, সমস্ত সতর্কতা এবং ত্রুটি লগ করার জন্য এটি ব্যবহার করা হয়। সমর্থিত মানগুলি হলো:

  • PROTOLOG_LEVEL_DEBUG
  • PROTOLOG_LEVEL_VERBOSE
  • PROTOLOG_LEVEL_INFO
  • PROTOLOG_LEVEL_WARN
  • PROTOLOG_LEVEL_ERROR
  • PROTOLOG_LEVEL_WTF

গ্রুপ ওভাররাইড ( group_overrides ) : প্রতিটি প্রোটোলগ গ্রুপের জন্য লগ লেভেল ম্যানুয়ালি কনফিগার করার সুবিধা দেয়। প্রতিটি গ্রুপে রয়েছে:

  • name : প্রোটোলগ গ্রুপের নাম, যা অ্যান্ড্রয়েড সোর্স কোডে ব্যবহৃত হয়।
  • log_from : default_log_from_level এর মতোই, কিন্তু এটি শুধুমাত্র বর্তমান গ্রুপের জন্য নির্দিষ্ট করা হয়।
  • collect_stacktrace : যখন এটি true তে সেট করা হয়, তখন ট্রেস করা গ্রুপের প্রতিটি ProtoLog মেসেজের স্ট্যাক ট্রেস সংগ্রহ করে।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য ProtoLog ট্রেস টাইপ দেখায়:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.protolog"
           protolog_config: {
              tracing_mode: DEFAULT
              default_log_from_level: PROTOLOG_LEVEL_WARN
              group_overrides: {
                 group_name: "WM_SHELL_STARTING_WINDOW"
                 log_from: PROTOLOG_LEVEL_DEBUG
                 collect_stacktrace: true
              }
           }
       }
   }
EOF

ইনপুট

এই ট্রেস টাইপের জন্য android.input.inputevent ডেটা সোর্স নামটি ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

ট্রেস মোড ( trace_mode ) : এটি নির্ধারণ করে যে ইনপুট ট্রেসটি গোপনীয়তা-সংরক্ষণের নিয়ম ব্যবহার করে শুরু করা হবে, নাকি সমস্ত ইনপুট ইভেন্ট রেকর্ড করা হবে:

  • TRACE_MODE_TRACE_ALL : সিস্টেম দ্বারা প্রক্রিয়াকৃত সমস্ত ইনপুট ইভেন্ট রেকর্ড করে, সেগুলি যে প্রেক্ষাপটেই প্রক্রিয়া করা হোক না কেন।
  • TRACE_MODE_USE_RULES : কোন ইভেন্টগুলো ট্রেস করা হবে তা নির্দিষ্ট করতে এই কনফিগে সংজ্ঞায়িত ট্রেসিং নিয়মগুলো ব্যবহার করে। ট্রেসের নিয়মগুলো নির্দিষ্ট করার বিষয়ে আরও তথ্যের জন্য android_input_event_config.proto দেখুন।

উদাহরণ

নিম্নলিখিতটি adb-এর ইনপুট ট্রেস টাইপের একটি উদাহরণ:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.input.inputevent"
           android_input_event_config: {
              mode: TRACE_MODE_TRACE_ALL
           }
       }
   }
EOF

সারফেসফ্লিঙ্গার (স্তর)

এই ট্রেস টাইপের জন্য android.surfaceflinger.layers ডেটা সোর্স নামটি ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

ট্রেসিং মোড ( mode ) : আইটেমগুলি কত ঘন ঘন লগ করা হবে তা নির্ধারণ করে:

  • MODE_ACTIVE : লেয়ারগুলোর স্ন্যাপশট ট্রেস করে। প্রতিবার লেয়ারে কোনো পরিবর্তন ঘটলে একটি স্ন্যাপশট নেওয়া হয়।
  • MODE_GENERATED : সারফেসফ্লিঙ্গারের অভ্যন্তরীণ রিং বাফারে সংরক্ষিত ট্রানজ্যাকশনগুলো থেকে লেয়ারের স্ন্যাপশট তৈরি করে। এই ডেটা সোর্সটি ফ্লাশ করা হলে লেয়ারের স্ন্যাপশট তৈরি হয়।
  • MODE_DUMP : একটিমাত্র লেয়ারের স্ন্যাপশট ট্রেস করে।
  • MODE_GENERATED_BUGREPORT_ONLY : MODE_GENERATED মতোই, কিন্তু এটি লেয়ার স্ন্যাপশট তৈরি করা শুরু করে শুধুমাত্র যখন একটি বাগ রিপোর্ট নেওয়া হয়, ট্রেস ফ্লাশ করার সময় নয়।

ট্রেস ফ্ল্যাগ ( trace_flags ) :

  • TRACE_FLAG_INPUT : যদি সারফেসটিতে ইনপুট ডেটা থাকে, তাহলে এটি ইনপুট উইন্ডোর নির্দিষ্ট বিবরণ ট্র্যাক করে।
  • TRACE_FLAG_COMPOSITION : গঠনের ধরণ এবং দৃশ্যমান অঞ্চল চিহ্নিত করে।
  • TRACE_FLAG_EXTRA : অফস্ক্রিন লেয়ার সহ অতিরিক্ত সারফেস মেটাডেটা ট্রেস করে।

  • TRACE_FLAG_HWC : অতিরিক্ত অসংগঠিত হার্ডওয়্যার কম্পোজার মেটাডেটা ট্রেস করে।

  • TRACE_FLAG_BUFFERS : সারফেসের সমস্ত বাফার পরিবর্তন ট্রেস করার জন্য SurfaceFlinger-কে কনফিগার করে। ডিফল্টরূপে, SurfaceFlinger শুধুমাত্র জ্যামিতিক পরিবর্তন ঘটলেই একটি নতুন অবস্থা ট্রেস করে।

  • TRACE_FLAG_VIRTUAL_DISPLAYS : ট্রেসে ভার্চুয়াল ডিসপ্লে লেয়ার অন্তর্ভুক্ত করে।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য SurfaceFlinger ট্রেস টাইপটি দেখায়:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.surfaceflinger.layers"
           surfaceflinger_layers_config: {
              mode: MODE_ACTIVE
              trace_flags: TRACE_FLAG_INPUT
              trace_flags: TRACE_FLAG_COMPOSITION
              trace_flags: TRACE_FLAG_HWC
              trace_flags: TRACE_FLAG_BUFFERS
              trace_flags: TRACE_FLAG_VIRTUAL_DISPLAYS
           }
       }
   }
EOF

বিভিন্ন কনফিগারেশন মানের অর্থ সম্পর্কে বিস্তারিত জানতে সারফেসফ্লিঙ্গার (SurfaceFlinger) দেখুন।

শেল রূপান্তর

এই ট্রেস টাইপের জন্য com.android.wm.shell.transition ডেটা সোর্স নামটি ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

এই ট্রেস টাইপের কোনো কনফিগারেশন অপশন নেই।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য শেল ট্রানজিশন ট্রেস টাইপ দেখায়:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "com.android.wm.shell.transition"
       }
   }
EOF

সারফেসফ্লিঙ্গার (লেনদেন)

এই ট্রেস টাইপের জন্য android.surfaceflinger.transactions ডেটা সোর্স নামটি ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

ট্রেসিং মোড ( mode ) : আইটেমগুলি কত ঘন ঘন লগ করা হবে তা নির্ধারণ করে:

  • MODE_CONTINUOUS : প্রতিবার ডেটা সোর্স ফ্লাশ করার সময় সারফেসফ্লিঙ্গার তার অভ্যন্তরীণ ট্রানজ্যাকশনের রিং বাফারটি লিখে রাখে। এই রিং বাফারে সারফেসফ্লিঙ্গারের প্রাথমিক অবস্থা এবং সর্বশেষ ট্রানজ্যাকশনগুলো থাকে।

  • MODE_ACTIVE : ডেটা সোর্সটি বন্ধ না হওয়া পর্যন্ত SurfaceFlinger প্রথমে প্রাথমিক অবস্থা এবং তারপর প্রতিটি আগত ট্রানজ্যাকশন লিখে রাখে।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য SurfaceFlinger ট্রানজ্যাকশন ট্রেস টাইপটি দেখায়।

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.surfaceflinger.transactions"
           surfaceflinger_transactions_config: {
              mode: MODE_ACTIVE
           }
       }
   }
EOF

আইএমই

এই ট্রেস টাইপের জন্য ডেটা সোর্স নেম হিসেবে android.inputmethod ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

এই ট্রেস টাইপের কোনো কনফিগারেশন অপশন নেই।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য IME ট্রেস টাইপ দেখায়:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.inputmethod"
       }
   }
EOF

ভিউক্যাপচার

এই ট্রেস টাইপের জন্য ডেটা সোর্স নেম হিসেবে android.viewcapture ব্যবহার করুন।

কনফিগারেশন বিকল্পগুলি

এই ট্রেস টাইপের কোনো কনফিগারেশন অপশন নেই।

উদাহরণ

নিম্নলিখিত উদাহরণটি adb-এর জন্য ViewCapture ট্রেস টাইপটি দেখায়:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.viewcapture"
       }
   }
EOF

সম্পূর্ণ উদাহরণ

পারফেটটো আপনাকে একটিমাত্র কনফিগারেশনে একাধিক উৎস থেকে ডেটা সংগ্রহ করার সুযোগ দেয়। আপনি একটিমাত্র কমান্ড ব্যবহার করে সমস্ত উইনস্কোপ ট্রেস সংগ্রহ করতে পারেন:

$ adb shell -t perfetto \
     -c - --txt \
     -o /data/misc/perfetto-traces/trace \
   <<EOF
   unique_session_name: "my_custom_session"
   buffers: {
       size_kb: 63488
       fill_policy: RING_BUFFER
   }
   data_sources: {
       config {
           name: "android.windowmanager"
           windowmanager_config: {
              log_level: LOG_LEVEL_VERBOSE
              log_frequency: LOG_FREQUENCY_TRANSACTION
           }
       }
   }
   data_sources: {
       config {
           name: "android.protolog"
           protolog_config: {
              tracing_mode: ENABLE_ALL
           }
       }
   }
   data_sources: {
       config {
           name: "android.input.inputevent"
           android_input_event_config: {
              mode: TRACE_MODE_TRACE_ALL
           }
       }
   }
   data_sources: {
       config {
           name: "android.surfaceflinger.layers"
           surfaceflinger_layers_config: {
              mode: MODE_ACTIVE
              trace_flags: TRACE_FLAG_INPUT
              trace_flags: TRACE_FLAG_COMPOSITION
              trace_flags: TRACE_FLAG_HWC
              trace_flags: TRACE_FLAG_BUFFERS
              trace_flags: TRACE_FLAG_VIRTUAL_DISPLAYS
           }
       }
   }
   data_sources: {
       config {
           name: "com.android.wm.shell.transition"
       }
   }
   data_sources: {
       config {
           name: "android.surfaceflinger.transactions"
           surfaceflinger_transactions_config: {
              mode: MODE_ACTIVE
           }
       }
   }
   data_sources: {
       config {
           name: "android.inputmethod"
       }
   }
   data_sources: {
       config {
           name: "android.viewcapture"
       }
   }
EOF

অ্যান্ড্রয়েড ১৪ এবং এর নিচের সংস্করণগুলিতে ট্রেস ক্যাপচার করুন

নিম্নলিখিত প্রতিটি ট্রেসের জন্য adb shell কমান্ডগুলো চালানোর আগে adb root চালান। ট্রেস শেষে, ট্রেস ফাইলগুলো /data/misc/wmtrace এ পাওয়া যাবে। কোনো ডিভাইস থেকে একটি ফাইল বা ডিরেক্টরি এবং তার সাবডিরেক্টরিগুলো কপি করতে, “একটি ডিভাইসে এবং ডিভাইস থেকে ফাইল কপি করুন” দেখুন।

উইন্ডো ম্যানেজার ট্রেস

WindowManager ট্রেস ক্যাপচার করতে:

  • ট্রেস সক্ষম করুন:

    adb shell wm tracing start
    
  • ট্রেস নিষ্ক্রিয় করুন:

    adb shell wm tracing stop
    
  • ট্রেস ক্যাপচার চালানোর সময় লগিং ডেটা ফাইলে সংরক্ষণ করুন:

    adb shell wm tracing save-for-bugreport
    
  • প্রতি ফ্রেমে একবার ট্রেস লগ করুন:

    adb shell wm tracing frame
    
  • প্রতিটি লেনদেন লগ করুন:

    adb shell wm tracing transaction
    
  • সর্বোচ্চ লগ সাইজ (কেবি-তে) সেট করুন:

    adb shell wm tracing size
    
  • প্রিন্ট ট্রেস স্ট্যাটাস:

    adb shell wm tracing status
    
  • লগ লেভেলকে critical (শুধুমাত্র সীমিত তথ্যসহ দৃশ্যমান উইন্ডো), trim (সীমিত তথ্যসহ সমস্ত উইন্ডো), অথবা all (সমস্ত উইন্ডো এবং তথ্য) এ সেট করুন:

    adb shell wm tracing level
    

উইন্ডো ম্যানেজার ডাম্প

WindowManager ডাম্প ক্যাপচার করতে:

adb exec-out dumpsys window --proto > window_dump.winscope

প্রোটোলগ

প্রোটোলগ সিস্টেমের জন্য নিম্নলিখিত কমান্ডগুলো ব্যবহৃত হয়।

system_server প্রসেসে:

  • প্রোটোলগ শুরু করুন:

    adb shell cmd window logging start
    
  • প্রোটোলগ বন্ধ করুন:

    adb shell cmd window logging stop
    
  • প্রদত্ত লগ গ্রুপগুলির জন্য ProtoLog সক্রিয় করুন:

    adb shell cmd window logging enable [group...]
    
  • প্রদত্ত লগ গ্রুপগুলির জন্য ProtoLog নিষ্ক্রিয় করুন:

    adb shell cmd window logging disable [group...]
    
  • প্রদত্ত লগ গ্রুপগুলির জন্য লগক্যাট লগিং সক্রিয় করুন:

    adb shell cmd window logging enable-text [group...]
    
  • প্রদত্ত লগ গ্রুপগুলির জন্য Logcat লগিং নিষ্ক্রিয় করুন:

    adb shell cmd window logging disable-text [group...]
    

WMShell-এ:

  • প্রোটোলগ শুরু করুন:

    adb shell dumpsys activity service SystemUIService WMShell
    

সারফেসফ্লিঙ্গার ট্রেস (স্তর)

সারফেসফ্লিঙ্গার লেয়ার ট্রেসিং ক্যাপচারের জন্য পারফেটটো ট্রেস ব্যবহার করে। কনফিগারেশন তথ্যের জন্য ট্রেস কনফিগারেশন দেখুন।

নিম্নলিখিত উদাহরণটি সারফেসফ্লিঙ্গার লেয়ার ট্রেসিং-এর একটি কনফিগারেশন দেখায়:

unique_session_name: "surfaceflinger_layers_active"
buffers: {
    size_kb: 63488
    fill_policy: RING_BUFFER
}
data_sources: {
    config {
        name: "android.surfaceflinger.layers"
        surfaceflinger_layers_config: {
            mode: MODE_ACTIVE
            trace_flags: TRACE_FLAG_INPUT
            trace_flags: TRACE_FLAG_COMPOSITION
            trace_flags: TRACE_FLAG_HWC
            trace_flags: TRACE_FLAG_BUFFERS
            trace_flags: TRACE_FLAG_VIRTUAL_DISPLAYS
        }
    }
}

নিম্নলিখিত উদাহরণ কমান্ডটি SurfaceFlinger লেয়ারগুলির জন্য ট্রেসিং তৈরি করে:

adb shell -t perfetto \
    -c - --txt \
    -o /data/misc/perfetto-traces/trace \

সারফেসফ্লিঙ্গার ডাম্প (স্তর)

SurfaceFlinger ডাম্প ক্যাপচার করতে, নিম্নলিখিত কমান্ডটি চালান:

adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.winscope

শেল রূপান্তর

ট্রানজিশন ট্রেসিং-এর জন্য নিম্নলিখিত কমান্ডগুলো ব্যবহৃত হয়।

system_server প্রসেসে, নিম্নলিখিত কমান্ডগুলো ব্যবহার করুন:

  • ট্রেস শুরু করুন:

    adb shell cmd window shell tracing start
    
  • একটি চিহ্ন বন্ধ করুন:

    adb shell cmd window shell tracing stop
    
  • WMShell-এ একটি ট্রেস শুরু করুন:

    adb shell dumpsys activity service SystemUIService WMShell transitions tracing start
    
  • WMShell-এ ট্রেস বন্ধ করুন:

    adb shell dumpsys activity service SystemUIService WMShell transitions tracing stop
    

আইএমই

ইনপুট মেথড এডিটর (IME) ট্রেসিং-এর জন্য নিম্নলিখিত কমান্ডগুলো ব্যবহৃত হয়:

  1. ইনপুট মেথড (IM) ক্লায়েন্ট, ইনপুট মেথড সার্ভিস (IMS), এবং ইনপুট মেথড ম্যানেজমেন্ট সার্ভিস (IMMS)-এর জন্য IME ট্রেসিং শুরু করুন: adb shell ime tracing start
  • IME ক্লায়েন্ট, IMS, এবং IMMS ট্রেসিং শুরু করুন:

    adb shell ime tracing stop
    

সারফেসফ্লিঙ্গার (লেনদেন)

SurfaceFlinger ট্রানজ্যাকশন ট্রেসিং ক্যাপচারের জন্য Perfetto ট্রেস ব্যবহার করে। কনফিগারেশন তথ্যের জন্য ট্রেস কনফিগারেশন দেখুন।

নিম্নলিখিত উদাহরণটি সারফেসফ্লিঙ্গার সক্রিয় ট্রেসিংয়ের জন্য একটি পারফেটটো কনফিগারেশন দেখায়:

unique_session_name: "surfaceflinger_transactions_active"
buffers: {
    size_kb: 1024
    fill_policy: RING_BUFFER
}
data_sources: {
    config {
        name: "android.surfaceflinger.transactions"
        surfaceflinger_transactions_config: {
            mode: MODE_ACTIVE
        }
    }
}
write_into_file: true
file_write_period_ms: 100

নিম্নলিখিত উদাহরণটি সারফেসফ্লিঙ্গার কন্টিনিউয়াস ট্রেসিং- এর জন্য একটি পারফেট্টো কনফিগারেশন দেখায়:

unique_session_name: "surfaceflinger_transactions_continuous"
buffers: {
    size_kb: 1024
    fill_policy: RING_BUFFER
}
data_sources: {
    config {
        name: "android.surfaceflinger.transactions"
        surfaceflinger_transactions_config: {
            mode: MODE_CONTINUOUS
        }
    }
}

নিম্নলিখিত উদাহরণ কমান্ডটি সারফেসফ্লিঙ্গার ট্রানজ্যাকশনগুলির জন্য ট্রেসিং তৈরি করে:

    adb shell perfetto \
    -c - --txt \
    -o /data/misc/perfetto-traces/trace \