安卓Strace记录系统调用

安卓Strace记录系统调用,第1张

记录AppNaitive层 系统调用函数名字参数返回结果之类的

分析一些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/29692

1、直运局伍接strace运行命令:strace xxx

2、旁或跟踪已运行的进程:strace -p pid

3、输腊掘出到文件:strace -o filename -p pid


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12130940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存