`

linux strace命令用法

阅读更多
linux strace命令用法

调用:
strace [ -dffhiqrtttTvxx ] [ -acolumn ] [ -eexpr ] ...
[ -ofile ] [ -ppid ] ... [ -sstrsize ] [ -uusername ] [ command [ arg ... ] ]

strace -c [ -eexpr ] ... [ -Ooverhead ] [ -Ssortby ] [ command [ arg ... ] ]
功能:
跟踪程式执行时的系统调用和所接收的信号.通常的用法是strace执行一直到commande结束.
并且将所调用的系统调用的名称、参数和返回值输出到标准输出或者输出到-o指定的文件.
strace是一个功能强大的调试,分析诊断工具.你将发现他是一个极好的帮手在你要调试一个无法看到源码或者源码无法在编译的程序.
你将轻松的学习到一个软件是如何通过系统调用来实现他的功能的.而且作为一个程序设计师,你可以了解到在用户态和内核态是如何通过系统调用和信号来实现程序的功能的.
strace的每一行输出包括系统调用名称,然后是参数和返回值.这个例子:
strace cat /dev/null
他的输出会有:
open(\"/dev/null\",O_RDONLY) = 3
有错误产生时,一般会返回-1.所以会有错误标志和描述:
open(\"/foor/bar\",)_RDONLY) = -1 ENOENT (no such file or directory)
信号将输出喂信号标志和信号的描述.跟踪并中断这个命令\"sleep 600\":
sigsuspend({}
--- SIGINT (Interrupt) ---
+++ killed by SIGINT +++
参数的输出有些不一致.如shell命令中的 \">>tmp\",将输出:
open(\"tmp\",O_WRONLY|O_APPEND|A_CREAT,0666) = 3
对于结构指针,将进行适当的显示.如:\"ls -l /dev/null\":
lstat(\"/dev/null\",{st_mode=S_IFCHR|0666},st_rdev=makdev[1,3],...}) = 0
请注意\"struct stat\" 的声明和这里的输出.lstat的第一个参数是输入参数,而第二个参数是向外传值.
当你尝试\"ls -l\" 一个不存在的文件时,会有:
lstat(/foot/ball\",0xb004) = -1 ENOENT (no such file or directory)
char*将作为C的字符串类型输出.没有字符串输出时一般是char* 是一个转义字符,只输出字符串的长度.
当字符串过长是会使用\"...\"省略.如在\"ls -l\"会有一个gepwuid调用读取password文件:
read(3,\"root::0:0:System Administrator:/\"...,1024) = 422
当参数是结构数组时,将按照简单的指针和数组输出如:
getgroups(4,[0,2,4,5]) = 4
关于bit作为参数的情形,也是使用方括号,并且用空格将每一项参数隔开.如:
sigprocmask(SIG_BLOCK,[CHLD TTOU],[]) = 0
这里第二个参数代表两个信号SIGCHLD 和 SIGTTOU.如果bit型参数全部置位,则有如下的输出:
sigprocmask(SIG_UNBLOCK,~[],NULL) = 0
这里第二个参数全部置位.

参数说明:
-c 统计每一系统调用的所执行的时间,次数和出错的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-h 输出简要的帮助信息.
-i 输出系统调用的入口指针.
-q 禁止输出关于脱离的消息.
-r 打印出相对时间关于,,每一个系统调用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级.
-ttt 微秒级输出,以秒了表示时间.
-T 显示每一调用所耗的时间.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制形式输出非标准字符串
-xx 所有字符串以十六进制形式输出.
-a column
设置返回值的输出位置.默认为40.
-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
输出写入到指定文件中的数据.
-o filename
将strace的输出写入文件filename
-p pid
跟踪指定的进程pid.
-s strsize
指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
-u username
以username的UID和GID执行被跟踪的命令.
分享到:
评论

相关推荐

    linux的strace命令(详解)

    Linux 的 Strace 命令详解 Strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。Strace 显示这些调用的参数并返回符号形式的值。Strace 从内核接收信息,而且不需要以任何特殊的方式来构建...

    strace 命令用法

    ### 一、strace命令的基本结构 `strace`命令的基本格式如下: ```bash strace [选项] [-e trace=EXPR] [-f] [-tt] [-T] [-p PID] [-PPID] [-c] [-o FILE] [-s SIZE] [--seccomp] [command [args...]] ``` 其中,`...

    Linux应用调试之strace命令详解

    strace命令使用 strace提供多种选项以满足不同需求,常见的有: - `-o file`:指定跟踪信息的输出文件,如 `strace -o log.txt` 将输出重定向到 `log.txt`。 - `-t`:在输出中包含每个系统调用的时间戳,精确到秒...

    linux的strace命令.docx

    `strace`命令的基本形式是`strace <command>`,其中`<command>`是你想要追踪的程序。它会显示程序运行过程中所调用的所有系统调用及其参数和返回值。 2. **选项**: - `-f` 和 `-F`:这两个选项用于同时追踪目标...

    strace跟踪工具使用手册

    如果需要编译为特定平台的strace,需要使用./configure--host=指定平台的交叉编译器,例如,编译为H90平台,输入./configure--host=arm-hisiv510-linux;编译为H100平台,则输入./configure--host=aarch64-marvell-...

    strace命令 跟踪系统调用

    strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。 strace常用来跟踪进程执行时的系统...

    嵌入式linux下移植strace调试应用程序工具源码

    在嵌入式Linux系统中,调试工具的使用对于开发者来说至关重要,其中`strace`是一个非常实用的系统调用跟踪工具。它可以帮助我们监控和记录应用程序执行时对系统调用的使用情况,以及相关的信号处理。这篇内容将详细...

    Linux常用命令-API手册.zip

    "Linux常用命令大全.chm"则可能包含更为全面的命令集,不仅包含基础命令,还可能涉及高级用法和一些不那么常用的工具。例如: 7. 脚本编程:`bash`基础知识,包括变量、条件语句、循环结构,以及函数的编写。 8. ...

    linux下的程序调试工具ltrace和strace终版.pdf

    使用 strace 工具可以通过以下命令来实现: strace ./hello 其中,hello 是要调试的程序。strace 工具将跟踪 hello 程序的系统调用,并提供详细的系统调用信息。 三、ltrace 和 strace 的对比 ltrace 和 strace ...

    Linux常用命令手册大全.rar

    Linux操作系统是全球最广泛使用的开源操作系统之一,尤其在服务器领域占据主导地位。了解并熟练掌握Linux命令行操作是每一个IT从业者必备的技能。"Linux常用命令手册大全.rar" 提供了一个全面的学习资源,帮助用户...

    Linux 完全命令手册

    【Linux完全命令手册】是一本全面介绍Linux操作系统中命令用法的专业书籍,旨在帮助用户深入理解和熟练运用Linux命令行环境。这本书涵盖了从基础到高级的各种命令,为用户提供了一个全面的参考指南,无论你是初学者...

    linux命令参考手册(原版)

    对于任何想要深入学习和使用Linux的用户来说,掌握Linux命令是至关重要的第一步。《Linux命令参考手册》(原版)是一份详尽的资源,它包含了大量用于操作、管理和维护Linux系统的命令,帮助用户提高效率,解决实际...

    Linux课件ppt及常用Linux命令集

    - 遇到问题时,学会使用`dmesg`查看内核消息,`journalctl`查看系统日志,`strace`跟踪系统调用等工具。 8. **Linux常见问题解答**: - 包含20个和29个详细解答的问题集可能涵盖了从用户认证问题、权限问题到系统...

    strace-4.5.

    例如,要跟踪ls命令的所有系统调用,可以使用`strace ls`。 2. 选择跟踪的系统调用:使用`-e`选项指定要跟踪的系统调用,如`strace -e trace=open,write ls`只跟踪open和write两个系统调用。 3. 控制输出信息:...

    Linux系统命令及其使用详解

    本篇文章将详细阐述Linux系统中的常用命令及其用法,帮助读者提升在Linux环境下的操作效率。 一、文件与目录操作 1. `ls`:列出目录内容,通过`-l`选项可显示详细信息,如权限、所有者、大小等。 2. `cd`:改变...

    150个常用Linux命令

    ### Linux基础命令详解 随着Linux系统的广泛应用,掌握其基本命令对于任何从事IT行业的人来说变得尤为重要。本文将基于“150个常用Linux命令”的内容,详细介绍其中的关键知识点,特别是那些对于初学者而言至关重要...

    Linux系统命令及使用详解

    深入理解和熟练使用Linux系统命令是每个IT专业人员的基本技能。本资料包"Linux系统命令及使用详解"旨在帮助用户全面掌握Linux命令行操作,提升工作效率。 一、基础命令篇 1. `ls`:列出目录内容,常用参数如`-l`...

    linux命令之调试工具strace的深入分析

    最后,strace的电子书《linux的strace命令(详解).txt》可以在新浪电子书平台上下载,对于希望深入了解strace的用户来说,是一个非常好的学习资源。而man strace则提供了Linux系统中strace的官方手册页,用户可以通过...

    linux完全命令手册.RAR

    这些命令在日常操作中频繁使用,理解它们的用法能提高工作效率。 更进一步,手册可能还会包含文件和目录管理命令,例如`cp`(复制文件或目录)、`mv`(移动或重命名文件或目录)、`touch`(创建新文件或更新文件...

Global site tag (gtag.js) - Google Analytics