`

linux strace - 追踪系统调用

阅读更多
【基本介绍】
有时候发现有个别进程占用了大量CPU或者内存,我们可以查看进程的调用情况。

【strace解释】
[root@sparkVM salt]# strace  -h
usage: strace [-dDffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file]
              [-p pid] ... [-s strsize] [-u username] [-E var=val] ...
              [command [arg ...]]
   or: strace -c [-D] [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ...
              [command [arg ...]]
-c -- count time, calls, and errors for each syscall and report summary
-f -- follow forks, -ff -- with output into separate files
-F -- attempt to follow vforks, -h -- print help message
-i -- print instruction pointer at time of syscall
-q -- suppress messages about attaching, detaching, etc.
-r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs
-T -- print time spent in each syscall, -V -- print version
-v -- verbose mode: print unabbreviated argv, stat, termio[s], etc. args
-x -- print non-ascii strings in hex, -xx -- print all strings in hex
-a column -- alignment COLUMN for printing syscall results (default 40)
-e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]...
   options: trace, abbrev, verbose, raw, signal, read, or write
-o file -- send trace output to FILE instead of stderr
-O overhead -- set overhead for tracing syscalls to OVERHEAD usecs
-p pid -- trace process with process id PID, may be repeated
-D -- run tracer process as a detached grandchild, not as parent
-s strsize -- limit length of print strings to STRSIZE chars (default 32)
-S sortby -- sort syscall counts by: time, calls, name, nothing (default time)
-u username -- run command as username handling setuid and/or setgid
-E var=val -- put var=val in the environment for command
-E var -- remove var from the environment for command



【例子】
strace -o whoami-strace.txt whoami

open("/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/i686/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686/mmx", 0xbffff190) = -1 ENOENT (No such file or directory) 
open("/lib/i686/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/i686", 0xbffff190) = -1 ENOENT (No such file or directory)
open("/lib/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib/mmx", 0xbffff190) = -1 ENOENT (No such file or directory) 
open("/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/lib", {st_mode=S_IFDIR|0755, st_size=2352, ...}) = 0
open("/usr/lib/i686/mmx/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/i686/mmx", 0xbffff190) = -1 ENOENT (No such file or directory) 
open("/usr/lib/i686/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)


strace -p processId

【参考】
http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html
分享到:
评论

相关推荐

    strace-4.5.

    在Linux操作系统中,strace是一个非常实用的系统调用跟踪工具,它能够帮助开发者和系统管理员深入了解程序与操作系统内核之间的交互。本文将围绕strace-4.5.15版本,详细探讨其功能、原理及实际应用,旨在为读者提供...

    strace-4.5.15.tar.bz2.rar

    在Linux操作系统中,strace是一个非常实用的系统调用跟踪工具,它能够帮助开发者和系统管理员了解程序在运行过程中与操作系统的交互细节,包括系统调用的使用、参数传递以及返回值。本文将基于"strace-4.5.15.tar(1)...

    gdb-6.7&strace-4.5.15

    1. **系统调用监控**:`strace`可以跟踪并显示进程执行的所有系统调用,包括参数和返回值,这对于找出程序中的I/O问题、权限问题非常有效。 2. **信号处理**:可以观察程序如何响应和处理来自内核的信号,有助于理解...

    strace-4.11源码.7z(普通资源,通通5币)

    strace是Linux系统中一个非常重要的工具,它允许程序员和系统管理员监控和记录进程与系统调用间的交互,以及与信号处理相关的活动。strace-4.11源码的发布为开发者提供了深入了解Linux内核与用户空间交互的窗口,...

    strace-4.11源代码下载

    strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用。 Strace是一个简单的跟踪系统调用执行的工具。在其最简单的形式中,它可以从开始到结束跟踪二进制的执行,并在进程的生命周期中输出...

    linux的strace命令(详解)

    Strace 命令的工作原理是使用 ptrace 系统调用跟踪调试运行中的进程,详细原理不在本文讨论范围内,有兴趣可以参考 Strace 的源代码。 使用 Strace 命令可以快速诊断软件的“疑难杂症”,例如进程无法启动、软件...

    strace命令 跟踪系统调用

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

    strace-4.11 源码

    strace-4.11 源码。 strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等

    Linux-strace-6.11.tar.xz

    strace 是 Linux 环境下的一款程序调试工具,用于监控一个应用程序所使用的系统调用以及它所接收到的系统信息。 系统管理员、诊断人员和故障排除人员会发现,它对于解决源代码不易获得的程序问题非常宝贵,因为它们...

    strace-5.15 arm和arm64架构,Android可用

    它能够帮助我们跟踪和记录Linux系统调用,以及进程间的信号传递,从而揭示程序在操作系统级别上的行为。本文将深入探讨strace 5.15版本在arm和arm64架构下的应用,特别是在Android平台上的使用。 首先,strace 5.15...

    100个linux常用命令大全

    strace - 跟踪系统调用 strace -p PID sar - 收集、报告系统活动信息 sar -u 1 3 systemctl - 管理systemd服务 systemctl status service_name dig - DNS查询工具 dig example.com scp - 安全复制文件 scp file....

    strace跟踪工具使用手册

    Strace是一个在Linux环境下用于诊断、调试和跟踪系统调用和进程间通信的工具。它通过跟踪和记录指定进程对内核的调用和接收的信号,将系统调用的名字、参数、返回值打印出来,这对于解决和定位问题非常有帮助。 在...

    Linux教程-使用truss、strace或ltrace诊断软件

    truss、strace和ltrace是三个非常实用的系统级调试工具,它们能够帮助我们追踪进程的系统调用和库函数调用,从而找出问题所在。以下是关于这三个工具的详细说明: 1. **truss**: truss最初是为System V R4开发的...

    linux内核知识系列:系统调用

    1. `strace`: 一个用于跟踪进程系统调用的工具,帮助开发者理解程序行为和查找问题。 2. `perf`: 提供系统调用计数和性能分析,有助于性能优化。 3. 系统调用重定向:可以通过修改内核配置或使用`seccomp`机制限制或...

    Linux用strace查看系统调用

     strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统...

    Linux系统调用跟踪和进程错误退出分析.pdf

    在Linux系统中,有多种工具可以进行系统调用跟踪,包括ftrace、systemtap、gdb和strace等。每种工具都有其特点和优缺,ftrace采用静态trace_point方法,systemtap利用kprobe和kretprobe对系统调用处理函数的调用和...

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

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

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

    Linux中的strace是一款强大的命令行调试工具,它能够帮助开发者和系统管理员监控和诊断程序的系统调用以及接收到的信号。通过跟踪进程的系统调用和接收到的信号,strace能够以用户级的视角揭示程序运行时的操作和...

Global site tag (gtag.js) - Google Analytics