码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习(24)- strace

时间:2021-04-02 13:03:49      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:多个   libs   网络通   esc   mmap   调用   reload   data   sigaction   

strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等

常见参数如下

-tt 在每行输出的前面,显示毫秒级别的时间
-ttt也可以向上面那样展示微秒级的时间戳
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可
-r 选项展示系统调用之间的相对时间戳
-c 它包括系统调用的概要,执行时间,错误等等。使用-c选项能够以一种整洁的方式展示

常见跟踪

-e trace=file 跟踪和文件访问相关的调用(参数中有文件名)
-e trace=process 和进程管理相关的调用,比如fork/exec/exit_group
-e trace=network 和网络通信相关的调用,比如socket/sendto/connect
-e trace=signal 信号发送和处理相关,比如kill/sigaction
-e trace=desc 和文件描述符相关,比如write/read/select/epoll等
-e trace=ipc 进程见同学相关,比如shmget等

 

使用例子:

[kumufengchun@localhost~]$ strace ls
execve("/bin/ls", ["ls"], [/* 42 vars */]) = 0
brk(0)                                  = 0x1af0000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb98b254000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/opt/rh/devtoolset-6/root/usr/lib64/tls/x86_64/libselinux.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

...

跟踪nginx进程访问了哪些文件

strace -tt -T -f -e trace=file -o /data/log/strace.log -s 1024 ./nginx

跟踪某个进程

strace -o strace.log -tt -p 24298

 

参考:

https://blog.csdn.net/wang725/article/details/89297945

 https://linux.cn/article-3935-1.html

shell学习(24)- strace

标签:多个   libs   网络通   esc   mmap   调用   reload   data   sigaction   

原文地址:https://www.cnblogs.com/kumufengchun/p/14607137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!