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

  • 相关阅读:
    解决远程桌面复制文件大于3G出错问题
    c++builder Form重载WindowProc、WndProc 截获消息
    FireDAC指定mssql驱动
    C++Builder 增加IPEdit控件
    MySQL 字符串按数值进行排序
    Java POI导出Word表格并使用输出流下载文件弹出打开保存框
    Java POI导出Excel并使用输出流下载文件弹出打开保存框
    MySQL 查询除某些字段以外的值
    MySQL 一个字段多个值查询
    Java Calendar 计算两个时间相隔天数
  • 原文地址:https://www.cnblogs.com/uestc2007/p/15164396.html
Copyright © 2011-2022 走看看