2025年strace工具输出(strace -ff)

strace工具输出(strace -ff)p 1 SA8155 ftrace br 1 1 signal 知识 br shell 返回值大于 128 时 表示该脚本收到了 signal br br 1 2 ftrace cmd br make LDFLAGS static p

大家好,我是讯享网,很高兴认识大家。



 <p>1 SA8155 ftrace<br /> 1.1 signal知识<br /> shell $?返回值大于128时&#xff0c;表示该脚本收到了signal。<br /><br /> 1.2 ftrace-cmd<br /> make LDFLAGS&#61;-static <br /> CC&#61;aarch64-linux-gnu-gcc trace-cmd<br /><br /> 1.3 kill ftrace<br /> 1.3.1 enable<br /> echo nop &gt; <br /> /sys/kernel/debug/tracing/current_tracer<br /> echo syscalls:sys_enter_kill &gt;&gt; <br /> /sys/kernel/debug/tracing/set_event<br /> echo syscalls:sys_exit_kill &gt;&gt; <br /> /sys/kernel/debug/tracing/set_event<br /> echo 1 &gt; <br /> /sys/kernel/debug/tracing/tracing_on<br /><br /> cat /sys/kernel/debug/tracing/trace_pipe<br /><br /> 1.3.2 disable<br /> echo 0 &gt; <br /> /sys/kernel/debug/tracing/tracing_on<br /> echo 0 &gt; <br /> /sys/kernel/debug/tracing/events/syscalls/sys_exit_kill/enable<br /> echo 0 &gt; <br /> /sys/kernel/debug/tracing/events/syscalls/sys_enter_kill/enable<br /> echo nop &gt; <br /> /sys/kernel/debug/tracing/current_tracer<br /><br /> 1.4 my_func ftrace<br /> echo 0 &gt; <br /> /sys/kernel/debug/tracing/tracing_on<br /> echo 0 &gt; <br /> /sys/kernel/debug/tracing/trace<br /> echo function_graph &gt; <br /> /sys/kernel/debug/tracing/current_tracer<br /> echo funcgraph-proc &gt; <br /> /sys/kernel/debug/tracing/trace_options<br /> echo funcgraph-abstime &gt; <br /> /sys/kernel/debug/tracing/trace_options<br /><br /> echo &#34;my_func1 my_func2&#34; &gt; <br /> /sys/kernel/debug/tracing/set_ftrace_filter<br /> echo 1 &gt; <br /> /sys/kernel/debug/tracing/tracing_on<br /><br /> echo 0 &gt; /sys/kernel/debug/tracing/tracing_on<br /> cat /sys/kernel/debug/tracing/trace &gt; <br /> my_trace_result<br /><br /> 1.5 sched_switch<br /> 1.5.1 sched_switch<br /> insmod driver, then run ftrace script, this sequence could ensure no latency issue according to my observation.<br /> sched_migrate_task: /proc/sys/kernel/sched_nr_migrate<br /> sched_switch: __schedule()<br /> sched_wakeup: try_to_wake_up()<br /> sched_wakeup_new: for new forked task<br /><br /> # per cpu buffer<br /> echo 10000 &gt; <br /> /sys/kernel/debug/tracing/buffer_size_kb<br /> # echo &#34;(prev_pid &#61;&#61; 1 || next_pid &#61;&#61; 1)&#34; &gt; <br /> # /sys/kernel/debug/tracing/events/sched/sched_switch/filter<br /><br /> # echo 1 &gt; <br /> # /sys/kernel/debug/tracing/events/irq/irq_handler_entry/enable<br /> # echo 1 &gt; <br /> # /sys/kernel/debug/tracing/events/irq/irq_handler_exit/enable<br /><br /> echo 1 &gt; <br /> /sys/kernel/debug/tracing/events/sched/sched_switch/enable<br /> echo 1 &gt; <br /> /sys/kernel/debug/tracing/events/sched/sched_wakeup_new/enable<br /><br /> cat /sys/kernel/debug/tracing/set_event<br /><br /> echo 1 &gt; <br /> /sys/kernel/debug/tracing/tracing_on<br /> cat /sys/kernel/debug/tracing/trace<br /><br /> 1.5.2 scheduling latency time_diff.py<br /> # cur_line: [CPU number], timestamp<br /> import io<br /> import re<br /> import sys,os<br /> import shutil<br /><br /> arg0_proc_name &#61; &#39;&#39;<br /> def print_usage():<br />     print(&#39; 

讯享网

Usage: python ‘ + arg0_proc_name +
        ’ &lt;file&gt; &lt;match_string&gt;‘)

def find_string(src_file,
        match_string):
    last_line_cnt = 0
    cur_line_cnt = 0
    last_ts = 0
    cur_ts = 0
    last_string = ’‘
    num_of_intr = 0

    fp = io.open(src_file, ’r‘,
        encoding=’utf-8‘,
        errors=’ignore‘)
    for cur_string in fp:
        cur_line_cnt += 1
        if re.findall(match_string, cur_string):
            list = cur_string.split()
            tmp = float(list[3].rstrip(’:‘))
            cur_ts = int(tmp * 1000)
            delta = abs(cur_ts - last_ts)
            new_match_string = “next_comm=” +
                match_string
            if (delta &gt; 5 and
                    re.findall(new_match_string,
                        cur_string)):
                print(’++++ delta = ‘ +
                    str(delta) + ’ms, ‘ +
                    ’num_of_intr = ‘ + str(num_of_intr))
                print(str(last_line_cnt) + ’: ‘ +
                    last_string)
                print(str(cur_line_cnt) + ’: ‘ +
                    cur_string)

            last_ts = cur_ts
            last_line_cnt = cur_line_cnt
            last_string = cur_string
            num_of_intr = 0
        elif re.findall(“irq_handler_exit”, cur_string):
            num_of_intr = num_of_intr + 1
    fp.close()

def main():
    global arg0_proc_name
    arg0_proc_name = sys.argv[0]
    if sys.argv[0].rfind(os.path.sep) &gt; 0 :
        index = sys.argv[0].rfind(os.path.sep)
        arg0_proc_name = sys.argv[0][index+1:]

    if len(sys.argv) &lt; 3:
        print_usage()
        sys.exit(0)
    find_string(sys.argv[1], sys.argv[2])

if name == ’main‘:
    main()

1.5.3 disable cpuidle
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
i=0
while [ \(i -le 7 ]; do<br />     echo 1 &gt; /sys/devices/system/cpu/cpu\)i/cpuidle/state0/disable
    echo 1 &gt; /sys/devices/system/cpu/cpu\(i/cpuidle/state1/disable<br />     i&#61;\)((i + 1))
done

1.6 perfetto
perfetto: English Perfect
stress-ng: a next generation tool designed to stress test system hardware

https://ui.perfetto.dev/#!/viewer
tracebox -o /tmp/trace.pf –txt -c /root/xxx.conf

2 htop
ncurses_5.6
https://blog.csdn.net/zoosenpin/article/details/configure
–host=x86_64-unknown-linux-gnu
–without-trace
–without-cxx
–without-cxx-binding
–without-ada
–without-manpages
–without-progs
–without-tests
–with-shared

htop
https://blog.csdn.net/zoosenpin/article/details/configure –disable-unicode
–host=aarch64-poky-linux

3 ltrace
3.1 Android
https://github.com/LineageOS/android_external_ltrace

3.2 ltrace with Linaro build
3.2.1 zlib
http://www.zlib.net/fossils/

https://blog.csdn.net/zoosenpin/article/details/configure
–prefix=/path/to/zlib-1.2.11/aarch64

# in Makefile change gcc to
# aarch64-linux-gnu-gcc
make
make install

3.2.2 elfutils
https://sourceware.org/elfutils/ftp/0.178/

LDFLAGS=’-L/path/to/zlib-1.2.11/aarch64/lib‘
https://blog.csdn.net/zoosenpin/article/details/configure
–disable-debuginfod
–host=aarch64-linux-gnu 
–prefix=/path/to/elfutils-0.178/aarch64

make
CFLAGS+=
’-I/path/to/zlib-1.2.11/aarch64/include‘
LDFLAGS+=
’-Wl,-rpath-link,/path/to/zlib-1.2.11/aarch64/lib‘
LDFLAGS+=
’-L/path/to/zlib-1.2.11/aarch64/lib‘
make install

3.2.3 ltrace
https://github.com/dkogan/ltrace
Do not download ltrace 0.7.3 from http://www.ltrace.org, it is too old, does not support aarch64.
https://blog.csdn.net/zoosenpin/article/details/autogen.sh

CFLAGS=
’-I/path/to/elfutils-0.178/aarch64/include‘
LDFLAGS=
’-Wl,-rpath-link,/path/to/zlib-1.2.11/aarch64/lib -L/path/to/elfutils-0.178/aarch64/lib‘
https://blog.csdn.net/zoosenpin/article/details/configure
–host=aarch64-linux-gnu

[10-Jan-2022] add -ldw, -lelf, -lbz2, -ldl, -llzma, -lpthread for Android 8.0 x86_64.
make
CFLAGS+=
’-I/path/to/elfutils-0.178/aarch64/include‘
LDFLAGS+=
’-L/path/to/elfutils-0.178/aarch64/lib  -ldw -lelf‘
CFLAGS+=
’-I/path/to/zlib-1.2.11/aarch64/include‘
LDFLAGS+=
’-L/path/to/zlib-1.2.11/aarch64/lib -lz‘
LDFLAGS+=’-lbz2‘
LDFLAGS+=’-ldl‘
LDFLAGS+=’-llzma‘
LDFLAGS+=’-lpthread‘

3.2.4 static compilation of ltrace
add -all-static to LINK for libtool in Makefile, shall add it before -o \(&#64;, as shown below.<br /> LINK&#61;xxx <br /> -all-static -o \)@

4 strace
4.1 aarch64-linux
https://blog.csdn.net/zoosenpin/article/details/configure –enable-mpers=no
–host=aarch64-linux

4.2 strace
strace -e epoll_wait -x -p \(PID<br /> strace -p \)PID -tt -T -s 128 -x 2&gt;&1 |
grep “read(17”

1) sync time to PC
date -s “2020-02-02 16:02:15”
2) only capture SIGALRM
strace -e signal=SIGALRM
-e trace=none -tt -p &lt;\(PID&gt;<br /> 3) capture ioctl<br /> strace -e signal&#61;none <br /> -e trace&#61;ioctl -tt -p &lt;\)PID&gt;
4) capture all strace log
strace -tt -p &lt;$PID&gt;

4.3 How To Enable Userspace Dump Stack
prctl(PR_SET_DUMPABLE, 1);
add this code to rild.

需要添加的sepolicy权限如下:
allow xxx self:capability dac_override;

5 systemd
5.1 code
PulseAudio, systemd suite: by Lennart Poettering
https://github.com/systemd/systemd/releases
systemd-244/src/network/networkd.c

5.2 systemd-networkd
systemd-networkd
high priority: /etc/systemd/network
mid priority: /run/systemd/network
low priority: /usr/lib/systemd/network

systemd-networkd-wait-online
/lib/systemd/system

/lib/systemd/system/systemd-networkd.service
[Service]
ExecStartPre=+/bin/sh /usr/bin/xx.sh
Environment=SYSTEMD_LOG_LEVEL=debug
journalctl -b -u systemd-networkd &gt;
/tmp/networkd.log

5.3 systemd-analyze
opkg install systemd-analyze.ipk
opkg remove systemd-analyze
ipk: Itsy Package

systemd-analyze blame
systemd-analyze critical-chain
xxx.service
@后面的时刻表示该单元的启动时刻;+后面的时长表示该单元总计花了多长时间才完成启动。
systemd-analyze plot &gt; boot.svg
systemctl list-dependencies xxx.service

6 Abbreviations
OPP: Operating Performance Points
RBCPR: RapidBridge Core Power Reduction





















































































































































































































讯享网


小讯
上一篇 2025-05-03 11:39
下一篇 2025-05-11 20:10

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/148278.html