zoukankan      html  css  js  c++  java
  • shell学习(24)- strace

    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

  • 相关阅读:
    lock free
    Solr 开发环境搭建
    Web中实现网页跳转的方法大总结:
    CSS定位中最难理解的她——absolute的探讨
    JavaScript中正则表达式中遇到的问题——测试匹配
    编写一个Android平台遇到的所有问题(一)——查询sqlite数据库时遇到的问题
    初来乍到,大家好
    在stackoverflow上使用markdown
    提升debian中字体效果
    vim pathogen自动配置
  • 原文地址:https://www.cnblogs.com/kumufengchun/p/14607137.html
Copyright © 2011-2022 走看看