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.pswp.cn/news/454741.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454741.shtml
英文地址,請注明出處:http://en.pswp.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;是電腦的新的一種形態。從具體操作使用上來講&…