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

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

অ্যান্ড্রয়েড 15 থেকে শুরু করে, উইনস্কোপ ট্রেসগুলি পারফেটোতে একীভূত করা হয় এবং পারফেটো কমান্ড লাইন ব্যবহার করে সংগ্রহ করা হয়। প্রতিটি Winscope ট্রেস নিজস্ব কনফিগারেশন সহ একটি Perfetto ডেটা উৎস। আপনি পৃথকভাবে বা একক ট্রেসিং সেশনে কনফিগারেশন সক্ষম করতে পারেন।

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

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

এই ট্রেস টাইপের জন্য ডেটা সোর্স নাম 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 ) : প্রতিটি প্রোটোলগ গ্রুপের জন্য লগ লেভেলের ম্যানুয়াল কনফিগারেশন সক্ষম করে। প্রতিটি গ্রুপে রয়েছে:

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

উদাহরণ

নিম্নলিখিত 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.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 : পৃষ্ঠের সমস্ত বাফার পরিবর্তনগুলি ট্রেস করতে 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

বিভিন্ন কনফিগারেশন মানগুলির অর্থ সম্পর্কে বিশদ বিবরণের জন্য সারফেসফ্লিংগার দেখুন।

শেল ট্রানজিশন

এই ট্রেস টাইপের জন্য ডেটা সোর্স নাম 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 এর প্রাথমিক অবস্থা এবং সর্বশেষ লেনদেন রয়েছে।

  • MODE_ACTIVE : সারফেসফ্লিংগার প্রারম্ভিক অবস্থা এবং তারপর ডেটা উৎস বন্ধ না হওয়া পর্যন্ত প্রতিটি ইনকামিং লেনদেন লেখে।

উদাহরণ

নিচে 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-এর জন্য ভিউক্যাপচার ট্রেস টাইপের একটি উদাহরণ:

$ 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

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

পারফেটো আপনাকে একক কনফিগারেশনে একাধিক উত্স থেকে ডেটা সংগ্রহ করতে দেয়। আপনি একটি একক কমান্ড দিয়ে সমস্ত 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
    
  • সর্বোচ্চ লগ সাইজ সেট করুন (কেবিতে):

    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
    
  • প্রদত্ত লগ গ্রুপের জন্য প্রোটোলগ সক্ষম করুন:

    adb shell cmd window logging enable [group...]
    
  • প্রদত্ত লগ গ্রুপের জন্য প্রোটোলগ অক্ষম করুন:

    adb shell cmd window logging disable [group...]
    
  • প্রদত্ত লগ গ্রুপের জন্য Logcat লগিং সক্ষম করুন:

    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) ট্রেসিংয়ের জন্য ব্যবহৃত হয়:

  • ইনপুট মেথড (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 \