Linux监控命令strace

阅读数:47 评论数:0

跳转到新版页面

分类

Linux

正文

一、概述

strace常用来跟踪进行执行时的系统调用所接收的信号

二、参数

-p 跟踪指定的进程
-o filename 默认strace 将结果输出到stdout。通过-o 可以将输出写入到filename 文件中。
-ff 常与-o 选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID 文件。
-r 打印每一个系统调用的相对时间。
-t 在输出中的每一行前加上时间信息。-tt 时间确定到微秒级。还可以使用-ttt 打印相对时间。
-v 输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出。
-s 指定每一行输出字符串的长度,默认是32。
-c 统计每种系统调用所执行的时间,调用次数,出错次数。
-d 输出strace 关于标准错误的调试信息。
-i 输出系统调用的入口指针。
-T 显示每一调用所耗的时间。
-x 以十六进制形式输出非标准字符串。
-xx 所有字符串以十六进制形式输出。
-e expr
  • 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]
  •   qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行历史记录里的命令,所以要使用\\.
  •   -e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all
  •   -e trace=file 只跟踪有关文件操作的系统调用
  •   -e trace=process 只跟踪有关进程控制的系统调用
  •   -e trace=network 跟踪与网络有关的所有系统调用
  •   -e strace=signal 跟踪所有与系统信号有关的 系统调用
  •   -e trace=ipc 跟踪所有与进程通讯有关的系统调用
  •   -e abbrev=set 设定strace输出的系统调用的结果集。-v 等与 abbrev=none.默认为abbrev=all
  •   -e raw=set 将指定的系统调用的参数以十六进制显示
  •   -e signal=set 指定跟踪的系统信号.默认为all。如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号
  •   -e read=set 输出从指定文件中读出 的数据。例如: -e read=3,5
    •   -e write=set 输出写入到指定文件中的数据



相关推荐