Linux下使用strace的例子

strace参数如下:

-t 输出结果精确到秒

-tt 输出结果精确到微妙

-ttt 精确到微妙,而且时间表示为unix时间戳

-T   记录每个系统调用花费的时间,可以看看哪个系统调用时间长

-s 1024 显示系统调用参数时,对于字符串显示的长度, 默认是32,如果字符串参数很长,很多信息显示不出来

-o filename 把跟踪结果输出到文件

-p pid  可以跟踪某个后台进程

-c 统计每一系统调用的所执行的时间,次数和出错的次数等.

-d 输出strace关于标准错误的调试信息.

-f 除了跟踪当前进程外,还跟踪其子进程

-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.

-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.

-h 输出简要的帮助信息.

-i 输出系统调用的入口指针.

-q 禁止输出关于脱离的消息.

-r 打印出相对时间关于,,每一个系统调用.

-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.

-V 输出strace的版本信息.

-x 以十六进制形式输出非标准字符串

-xx 所有字符串以十六进制形式输出.

-e trace=nanosleep 只记录相关的系统调用信息。

-e trace=network  只记录和网络api相关的系统调用

-e trace=file  只记录涉及到文件名的系统调用

-e trace=desc  只记录涉及到文件句柄的系统调用

-e trace=set

-e trace=all

-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信号.

-u username 以username 的UID和GID执行被跟踪的命令

使用例子:

strace -T -tt -e trace=desc -s 1024 -o out.txt -p pid

strace -T -tt -e trace=all -o output.txt  -p pid

strace -fo out.txt sqlplus / as sysdba

---------------整理自网络

时间: 2024-09-07 13:59:16

Linux下使用strace的例子的相关文章

一个linux下socket编程的例子,client连server

关于socket编程,以下文章写得比较好:http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html 1. accept()函数,如果客户端一直没有连接,则服务端阻塞在accept()函数处. 以下是client代码 //============================================================================ // Name : client.cpp // A

linux下监控jvm 使用的方法

之前一直用jconsole监控jvm,图形界面简单易用,最近因为需要在纯linux下进行操作,所以总结了一下 linux下监控jvm的例子,这次主要用到了jstat工具, 各个参数意义: jstat -class pid:显示加载class的数量,及所占空间等信息. jstat -compiler pid:显示VM实时编译的数量等信息. jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间.其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数

Linux下socket编程,附带tcp例子

1.网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问

Linux下libaio的一个简单例子

转载:http://www.cnblogs.com/aLittleBitCool/archive/2011/10/18/2216646.html 异步io,很好玩的一个东西,从接口来看,封装的比较厉害,有时间研究内部实现,可以在项目中考虑替代select. libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高. 首先推荐两个介绍Linux I/O模型的页面,写的很好: http://www.ibm.com/developerworks/cn/l

linux下编译eXosip、osip,以及UAC和UAS的例子

从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013/06/25/3155427.html) 觉得对学习sip的初学者,包括我,都是很有帮助的.但是那是在window下的编译,我在这里稍微改了一下,让它支持在linux下编译测试运行通过. 我们这里使用库的版本:libosip2-3.6.0.tar,libeXosip2-3.6.0.tar,大家可以自

linux下java程序与C语言程序通过SOCKET通信的简单例子

linux下java程序与C语言程序通过SOCKET通信的简单例子 今天上午实验了java程序与c语言程序通过socket进行通信.由于没学过java,因此只是编写了C语言端的代码,java端的代码是从网上别的文章中找的,经过少量修改后与C语言端程序通信成功. 本例中C语言端作为服务器,java端作为客户端 代码如下: /****************** server program *****************/ #include <stdio.h> #include <sy

Linux下调试程序方法

您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问题的情况,这些问题包括段错误,内存溢出和泄漏,还有挂起.本文讨论了四种调试 Linux 程序的情况.在第 1 种情况中,我们使用了两个有内存分配问题的样本程序,使用 MEMWATCH 和 Yet Another Malloc Debugger(YAMD)工具来调试它们.在第 2 种情况中,我们使用了

Perf Event :Linux下的系统性能调优工具

Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展.Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析.得益于其优秀的体系结构设计,越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 .本文将介绍 Perf 在应用程序开发上的应用. AD:2014WOT全球软件技术

windows下的c语言和linux 下的c语言以及C标准库和系统API

1.引出我们的问题? 标准c库都是一样的!大家想必都在windows下做过文件编程,在linux下也是一样的函数名,参数都一样.当时就有了疑问,因为我们非常清楚 其本质是不可能一样的,源于这是俩个操作系统啊!但由于c标准库的封装就实现了接口一样.但是如果往深入,我们就非常清楚了在这层封装上还有一层封装其实就是操作系统对文件操作的封装,也就是文件IO.而我们c语言的封装叫标准IO,他们有什么区别那?显然标准iO是基于文件io的,标准IO调用了文件IO,也优化了文件IO,例如引入缓存机制. 2.上面