分析一些Native 执行流程还是蛮不错的。
类似如下
先准备Strace文件
先编译安装源码下的Strace文件
成功后去对应的目录找到
在使用mmma命令的时候可能会出现问题:
比如mmma未找到
需要先将执行
我编译的是安卓7.1的版本 不过在10.0上面也是可以用 ,可以直接用搏宏我编译好的
复制这段内容后打开百度网盘App, *** 作更方便哦。
链接: https://pan.baidu.com/s/1-tOk_-jDUiidR1aBwTkAmw 提取码:629u
-f 标记告诉 strace 应附加到相应进程中的所有现有线程,以及之闹雹后会产生的所有液银帆新线程。
也可以不加
也可以 加上 -o strace_log.txt保存到本地
更多细节可参考
谷歌开发者文档
https://source.android.google.cn/devices/tech/debug/strace
参考:
https://mabin004.github.io/2019/06/27/Android%E4%B8%8A%E5%88%A9%E7%94%A8Strace%E8%B7%9F%E8%B8%AA%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8/
https://source.android.google.cn/devices/tech/debug/strace
使用strace
strace 工具可调查系统调用的情况 有好几种可以使用的方法 其中一种是计算系统调用的时间并打印出来
$ strace cfp $(pidof mysqld)
Process attached with threads interrupt to quit
^CProcess detached
% time seconds usecs/call calls errors syscall
select
futex
read
unlink
write
pread
_llseek
[some lines omitted for brevity]
total
这种用法和oprofile 有点像 但是oprofile 还可以剖析程序的内部符号 而不仅仅是系统调用 另外 strace 拦截系统调用使用的是不同于oprofile 的技术 这会有一些不可预期性 开销也更大些 strace 度量时使用的是实际时间 而oprofile 使用的是花费的CPU 周期 举个例子 当I/O 等待出现问题的时候 strace 能将它们显示出来 因为它从诸如read或者pread 这样的系统调用开始计时 直到调用结束 但oprofile 不会告橡宴这样 因为I/O系统调用并不会真正地消耗CPU 周期 而只是等待I/O 完成而已
我们会在需要的时候使用oprofile 因为strace 对像mysqld 这样有大量线程的场景会产生一些副作用 当strace 附加上去后 mysqld 的运行会变得很慢 因此不适合在产品环境中使用 但在某些场景中strace 还是相当有用的 Percona Toolkit 中有一个叫做pt ioprofile 的工具就是使用strace 来生成I/O 活动的剖析报告的 这个工具很有帮助 可以证明或者驳斥某些难以测量的情况下的一些观点 此时袜银其他方法很难达到目的(如果运行的是MySQL 使用Performance Schema 也可以达到目的)
返回目录 高性能MySQL
如颂 编辑推荐
ASP NET MVC 框架揭秘
Oracle索引技术
ASP NET开发培训视频教程
lishixinzhi/Article/program/MySQL/201311/296921、直运局伍接strace运行命令:strace xxx
2、旁或跟踪已运行的进程:strace -p pid
3、输腊掘出到文件:strace -o filename -p pid
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)