Linux 状态命令之系统调用和信号传递 strace

简介

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

strace 与专业的调试工具比如说 gdb 之类的是没法相比的,因为它不是一个专业的调试器。

strace 的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace 会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。

安装

yum install -y strace

语法

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 统计每一系统调用的所执行的时间,次数和出错的次数等. -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执行被跟踪的命令


示例

追踪某进程:`strace -c -p 18892`。启动 strace 之后,可以使用ctrl+c停止,停止之后将会输出检查的结果,如下所示:

[fenglepeng@centos]# strace -c -p 44709
strace: Process 44709 attached
^Cstrace: Process 44709 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------85.18    1.231769           3    348468           stat10.16    0.146847        2068        71           select4.66    0.067435          15      4227       424 futex
------ ----------- ----------- --------- --------- ----------------
100.00    1.446051                352766       424 total

其他示例:

查看所有程序运行  strace python server.py
查看所有程序运行  strace ./aa.sh查看打开系统调用情况      strace -e open ./aa.sh
查看打开关闭系统调用情况  strace -e open,close ./aa.sh
查看打开关闭系统调用时间  strace -T -e open,close python3 main.py (T 时间在后面显示)查看打开关闭系统调用次数  strace -c -T -e open,close ./aa.sh (如程序一直在运行,停止后才会统计)
查看打开关闭系统调用时间  strace -t -T -e open,close ./aa.sh  
查看打开关闭系统调用时间  strace -tt -T -e open,close ./aa.sh  (tt 
查看打开系统调用输入log   strace -tt -T -e open -o trace.log ./aa.sh  (-o 输入trace.log文件)strace -tt -T -V -e trace=file -o /data/log/trace.log -s 1024 -p 23489


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

李飞飞:为什么计算机视觉对机器人如此重要?

根据Guide2Research的排名,IROS是计算机视觉领域排名第四的学术会议,前三名分别为CVPR、ICCV、ECCV。计算机视觉在机器人的发展史中起着非常重要的作用,与之相关的“感知”也正是历年IROS大会上的重要内容,随着机器人研究的发展和…

php 循环 显示 图片,thinkphp 循环显示图片问题!!!~~~~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼class CatController extends Controller {public function cat(){$goodsModel D(Admin/goods);$goodslist $goodsModel->field(goods_id,goods_name,shop_price,goods_img,market_price)->where(cat_id)->select();$th…

python flask 基础入门

1. Flask 中的Hello World! 在使用pycharm创建一个Flask项目后,将会默认创建一个flask的app,这里来讲下每行代码表示的意义,代码入下 from flask import Flask    # 导入flask模块 如果没有这个模块需要使用pip install flask 进行安装…

[C/C++]各种面试题

各种面试题 *程序的内存分配 一个由c/C编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap&#xf…

linux 命令 which whereis locate find

0、概述 * which:在PATH变量指定的路径中,搜索与指定名字匹配的系统命令的位置,并且返回第一个搜索结果。 * whereis:搜索与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。二进制文件(参数-b&…

python 转 exe -- py2exe库实录

本文基于windows 7 python 3.4 把python程序打包成exe,比较好用的库是py2exe 其操作步骤是: --> 编写python程序 --> 再额外编写一个导入了py2exe的python脚本(不妨如:setup.py)存在同一目录下 --> 运行这个脚本,打包生成的exe文件…

python网络爬虫面试题,搞定这套Python爬虫面试题(面试会so easy)

搞定这套Python爬虫面试题(面试会so easy)来源:中文源码网 浏览: 次 日期:2019年11月5日【下载文档: 搞定这套Python爬虫面试题(面试会so easy).txt 】(友情提示:右键点上行txt文档名->目标另存为)搞定这套Python爬虫面试题(面试会…

fastjson与spring mvc整合的配置

fastjson 是阿里巴巴开发的开源json解析组件&#xff0c;方便于通过java来生成和解析json格式的字符串和对象。 fastjson可以对Spring的返回数据进行json转换&#xff08;SpringMVC的ResponseBody注释&#xff09; 以下附上与spring mvc整合的xml配置&#xff1a; <mvc:anno…

Python 框架 之 Scrapy 爬虫(一)

在编写爬虫时&#xff0c;性能的消耗主要在IO请求中&#xff0c;当单进程单线程模式下请求URL时必然会引起等待&#xff0c;从而使得请求整体变慢。 1、同步执行 import requestsdef fetch_async(url):response requests.get(url)return responseurl_list [http://www.gith…

编程新手导论(转载)

第二部分 导论&#xff0c;这一部分主要是关于编程的导论&#xff0c; (要懂得一点思想具备一点常识)《设计&#xff0c;编码&#xff0c;&#xff0c;与软工》&#xff08;编程与思想&#xff09;这一章解释了三种思想&#xff0c;原语&#xff0c;抽象&#xff0c;组合&#…

如何让电脑成为看图说话的高手?计算机视觉顶会ICCV论文解读

ICCV&#xff0c;被誉为计算机视觉领域三大顶级会议之一。作为计算机视觉领域最高级别的会议之一&#xff0c;其论文集代表了计算机视觉领域最新的发展方向和水平。阿里巴巴在今年的大会上有多篇论文入选&#xff0c;本篇所解读的论文是阿里iDST与多家机构合作的入选论文之一&a…

canvas绘制线条1像素的问题

http://jo2.org/html5-canvas%E7%94%BB%E5%9B%BE3%EF%BC%9A1px%E7%BA%BF%E6%9D%A1%E6%A8%A1%E7%B3%8A%E9%97%AE%E9%A2%98/转载于:https://www.cnblogs.com/XIE7654/p/7493315.html

php汽车找车位,遭遇到车多车位少 教你如何快速找到停车位

[摘要]车主们大多时间会穿梭在市区&#xff0c;到了目的地后那就先找停车位&#xff0c;现在市区寸土寸金&#xff0c;一个停车位面积要占几平米呢&#xff0c;所以停车位基本是不够用的。下面和大家聊聊怎么找合适的停车位。车主们大多时间会穿梭在市区&#xff0c;去商场购物…

Python 框架 之 Scrapy 爬虫(二)

Scrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架。 其可以应用在数据挖掘&#xff0c;信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取)所设计的&#xff0c; 也可以应用在获取API所返回的数据(例如 Amazon Ass…

十六进制透明度参照表

00%FF&#xff08;不透明&#xff09; 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00&#xff08;全透明&#xff09;转载于:http…

lamp和php,[LAMP]Apache和PHP的结合

在LAMP架构中&#xff0c;Apache通过PHP模块与Mysql建立连接&#xff0c;读写数据。那么配置Apache和PHP结合的步骤是怎么操作的呢&#xff1f;1、修改http.conf文件[rootjuispan ~]# cat /usr/local/apache2.4/conf/httpd.conf......#ServerName......AllowOverride noneRequi…

Day-5: Python高级特性

python的理念是&#xff1a;简单、优雅。所以&#xff0c;在Python中集成了许多经常要使用的高级特性&#xff0c;以此来简化代码。 切片&#xff1a;对于一个list或者tuple&#xff0c;取其中一段的元素&#xff0c;称为切片&#xff08;Slice&#xff09;。 L[start:end]表示…

前端之 XMLHttpRequest

XMLHttpRequest 和AJAX的爱恨情仇 AJAX 是 asynchronous javascript and XML 的简写&#xff0c;中文翻译是异步的 javascript 和 XML&#xff0c;这一技术能够向服务器请求额外的数据而无须卸载页面&#xff0c;会带来更好的用户体验。虽然名字中包含 XML &#xff0c;但 AJAX…

makefile——小试牛刀

//a.h,包含头文件stdio.h,并且定义一个函数print #include<stdio.h> void print();//b.c&#xff0c;包含头文件a.h&#xff0c;然后就可以写print函数的内容了 #include"a.h" void print(){ printf("who are you\n"); }//c.c&#xff0c;包含头文件…

云电脑是什么_云电脑和我们现在平时用的电脑有什么区别?

&#x1f340;温馨提示&#x1f340;公众号推送改版&#xff0c;为了不让您错过【掌中IT发烧友圈】每天的精彩推送&#xff0c;切记将本号设置星标哦&#xff01;~01云电脑&#xff0c;是5G云服务时代的电脑新概念&#xff0c;是电脑的新的一种形态。从具体操作使用上来讲&…