zoukankan      html  css  js  c++  java
  • strace命令

    简介

    strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

    输出参数含义

    strace的两种运行模式

    1、直接追踪某些命令的执行

    语法

    strace <待追踪的命令>

    例如

    [root@iZzm446eh1ux98Z ~]# strace ls /

    2、追踪某个守护进程

    语法

    strace -p pid

     strace常用选项

    从实例中看:

    strace -tt -T -v -f -e trace=file -o /data/log/strace.log -s 1024 -p 23489
    -tt  在每行输出的前面,显示毫秒级别的时间
    -T   显示每次系统调用所花费的时间
    -v   对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
    -f   跟踪目标进程,以及目标进程创建的所有子进程
    -e   控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
    -o   把strace的输出单独写到指定的文件
    -s   当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
    -p   指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。

    strace的-e trace选项

    要跟踪某个具体的系统调用,-e trace=xxx即可。但有时候我们要跟踪一类系统调用,比如所有和文件名有关的调用、所有和内存分配有关的调用。strace提供了几类常用的系统调用组合名字。

    -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等


    参考:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html

  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/uestc2007/p/15164396.html
Copyright © 2011-2022 走看看