adb কমান্ডের মাধ্যমে ট্রেস ক্যাপচার করা

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

Android 15 থেকে শুরু করে, Winscope ট্রেস Perfetto-এর সাথে ইন্টিগ্রেট করা হয়েছে এবং Perfetto কমান্ড লাইন ব্যবহার করে সংগ্রহ করা হয়। প্রতিটি Winscope ট্রেস হল নিজস্ব কনফিগারেশন সহ একটি Perfetto ডেটা সোর্স। আপনি আলাদা আলাদাভাবে বা একটি সিঙ্গেল ট্রেসিং সেশনে কনফিগারেশন চালু করতে পারবেন।

Android 14 ও তার আগের যেকোনও ভার্সনে, প্রতিটি Winscope ট্রেসের আলাদা আলাদা কমান্ড থাকে এবং আপনি প্রতিটি আলাদা আলাদাভাবে সংগ্রহ করতে পারবেন। আরও তথ্যের জন্য Android 14 ও তার আগের ভার্সনে ট্রেস ক্যাপচার করুন দেখুন।

WindowManager

এই ট্রেস ধরনের জন্য ডেটা সোর্সের নাম 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

ProtoLog

এই ট্রেস ধরনের জন্য ডেটা সোর্সের নাম 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: ProtoLog গ্রুপের নাম, Android সোর্স কোডে ব্যবহার করা হয়।
  • 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

SurfaceFlinger (লেয়ার)

এই ট্রেস ধরনের জন্য ডেটা সোর্সের নাম 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: সারফেসে সব বাফার পরিবর্তনের ট্রেস করার জন্য 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 দেখুন।

Shell ট্রানজিশন

এই ট্রেস ধরনের জন্য ডেটা সোর্সের নাম 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

SurfaceFlinger (ট্রানজ্যাকশন)

এই ট্রেস টাইপের জন্য 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

IME

এই ট্রেস ধরনের জন্য ডেটা সোর্সের নাম 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

ViewCapture

এই ট্রেস টাইপের জন্য ডেটা সোর্সের নাম 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 ট্রেস

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 ডাম্প

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

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

ProtoLog

ProtoLog সিস্টেমের জন্য নিম্নলিখিত কমান্ড ব্যবহার করা হয়।

system_server প্রসেসে:

  • ProtoLog শুরু করুন:

    adb shell cmd window logging start
    
  • ProtoLog বন্ধ করুন:

    adb shell cmd window logging stop
    
  • প্রদত্ত লগ গ্রুপের জন্য ProtoLog চালু করুন:

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

    adb shell cmd window logging disable [group...]
    
  • উল্লেখ করা লগ গ্রুপের জন্য Logcat লগিং চালু করুন:

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

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

WMShell-এ:

  • ProtoLog শুরু করুন:

    adb shell dumpsys activity service SystemUIService WMShell
    

SurfaceFlinger ট্রেস (লেয়ার)

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

নিচের উদাহরণে 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 ডাম্প (লেয়ার)

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

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

Shell ট্রানজিশন

ট্রানজিশন ট্রেসিংয়ের জন্য নিম্নলিখিত কমান্ড ব্যবহার করা হয়।

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

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

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

    adb shell ime tracing stop
    

SurfaceFlinger (ট্রানজ্যাকশন)

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

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 একটানা ট্রেসিং-এর জন্য 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 \