`

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.11源代码下载

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

    strace命令 跟踪系统调用

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

    strace-4.11 源码

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

    论文研究-Linux系统调用跟踪和进程错误退出分析.pdf

    通过扩展Linux系统调用跟踪工具strace,实现了启发式跟踪工具heuristic-strace,其能够实时发现和自动跟踪应用程序中通过网络通信的进程,形成进程创建关系图、进程网络通信关系图,并结合系统调用的栈回溯信息,...

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

    参考1《linux的strace命令(详解).txt》 新浪电子书可下载2man strace一个基本上通用的 完整的用法:strace -o output.txt -T -tt -e trace=all -p 28979上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),...

    Linux用strace查看系统调用

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

    Linux应用调试之strace命令详解

    strace常用来跟踪进程执行时的系统调用和所接收的信号。下面通过本文给大家分享Linux应用调试之strace命令,需要的朋友参考下吧

    基于Linux调试工具strace与gdb的常用命令总结

    strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的。strace常用...

    strace:linux syscall跟踪器-开源

    strace项目已移至https://strace.io。 strace是Linux的诊断,调试和说明... 它用于监视和篡改用户空间进程与Linux内核之间的交互,其中包括系统调用,信号传递和进程状态更改。 内核功能ptrace使strace的操作成为可能。

    Linux中获取某个进程的系统调用以及参数(故障排查案例)

    通常可以用 strace 来跟踪。但是当进程已经处于 D 状态(uninterruptible sleep)时,strace 也帮不上忙。这时候可以通过 代码如下:cat /proc/<PID>/syscall来获取当前的系统调用以及参数。这里用最近排查的一个问题...

    linux内核调试分析指南

    linux设备子系统的组成 设备驱动模型 usb子系统分析 如何阅读分析大型子系统 btrfs文件系统分析 区间树核心代码分析 B树核心代码分析 调试相关子系统 kgdb源码分析 sysrq oprofile kprobes 驱动分析 载入模块符号 **...

    LINUX系统开发技术详解---基于ARM

    9 2.1.2 ARM处理器体系结构........................................................................................ 10 2.1.3 Linux 与ARM处理器.....3.6.2 Linux 系统调用.........................................

    linux C语言调试工具

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

    Linux 可卸载内核模块完全指南

    1.7 什么是内核守护进程 1.8 创建你自己的设备 <br>第二部分 渐入佳境 2.1 如何截获系统调用 2.2 一些有趣的系统调用 2.2.1 发现有趣的系统调用(strace方法) 2.3 迷惑内核的系统表 ...

    Oracle 进程追踪调试(Linux系统)

    说明:本文为Linux下Oracle进程追踪调试指导手册, ...strace命令是一个集诊断、调试、统计与一体的工具,它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。 ★ 在Oracle中的用途 ///////////////////////

    rbtrace:与strace类似,但用于ruby代码

    rbtrace:与strace类似,但用于ruby代码 rbtrace向您显示实时在另一个ruby进程内发生的方法调用。 rbtrace在运行于linux或mac osx上的ruby 1.8到2.2(及更高版本)上工作。 rbtrace设计为具有最小的开销,并且应该...

    containersummitdebug:一些用于容器的材料SF 2015年9月21日

    DTrace,mdb,snoop等跟踪系统调用,系统调用延迟,显示性能分析 实验工作 比较strace和DTrace对性能的影响 确定负载生成器如何与数据库集群通信 虫子 性能问题 确定往返集群和负载生成器的请求以及集群内节点之间的...

    monks:适用于 Linux 的 Procmon 替代品

    Monks 是一个内核模块,它劫持 sys 调用,跟踪哪些进程调用了哪些 sys 调用,使用了什么参数,返回值是什么等,并将该信息发送到一个不错的 ncurses 接口。 换句话说,Monks 就像strace ,但可以跟踪任何级别的任何...

    Android C++高级编程:使用NDK_Onur Cinar, 于红PDF电子书下载 带书签目录 完整版

    5.3.1 堆栈跟踪分析 127 5.3.2 对JNI的扩展检查 128 5.3.3 内存问题 130 5.3.4 strace 133 5.4 小结 134 第6章 Bionic API入门 135 6.1 回顾标准库 135 6.2 还有另一个C库 136 6.2.1 二进制兼容性 136 ...

Global site tag (gtag.js) - Google Analytics