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

আপনি ডিবাগ বিল্ডস (অর্থাৎ, userdebug এবং eng বিল্ডস) এ adb কমান্ড লাইন ব্যবহার করে Winscope ট্রেস সংগ্রহ করতে পারেন। adb দিয়ে Winscope ট্রেস সংগ্রহ করার আগে, 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 : ডেটা সোর্স শুরু হলে একক অবস্থার স্ন্যাপশট ট্রেস করে।

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

উদাহরণ

নিম্নলিখিত উদাহরণে 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 ) : প্রতিটি ProtoLog গ্রুপের জন্য লগ লেভেলের ম্যানুয়াল কনফিগারেশন সক্ষম করে। প্রতিটি গ্রুপে রয়েছে:

  • 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 : SurfaceFlinger এর অভ্যন্তরীণ রিং বাফারে রাখা লেনদেন থেকে লেয়ার স্ন্যাপশট তৈরি করে। এই ডেটা সোর্সটি ফ্লাশ করা হলে লেয়ারের স্ন্যাপশট তৈরি হয়।
  • 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 : সারফেসে সমস্ত বাফার পরিবর্তন ট্রেস করার জন্য সারফেসফ্লিংগার কনফিগার করে। ডিফল্টরূপে, জ্যামিতি পরিবর্তন ঘটলেই সারফেসফ্লিংগার একটি নতুন অবস্থা ট্রেস করে।

  • 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 : প্রতিবার ডেটা সোর্স ফ্লাশ করার সময় SurfaceFlinger তার অভ্যন্তরীণ লেনদেনের রিং বাফার লিখে। রিং বাফারে SurfaceFlinger এর প্রাথমিক অবস্থা এবং সর্বশেষ লেনদেন থাকে।

  • 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

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

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

$ 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

Android 14 এবং তার আগের ভার্সনে ট্রেস ক্যাপচার করুন

নিম্নলিখিত প্রতিটি ট্রেসের জন্য 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
    
  • সর্বাধিক লগ সাইজ সেট করুন (KB তে):

    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...]
    
  • প্রদত্ত লগ গ্রুপের জন্য লগক্যাট লগিং অক্ষম করুন:

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

WMShell-এ:

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

    adb shell dumpsys activity service SystemUIService WMShell
    

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

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

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

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

নিম্নলিখিত উদাহরণে SurfaceFlinger continuous tracing-এর জন্য একটি Perfetto কনফিগারেশন দেখানো হয়েছে:

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
        }
    }
}

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

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