日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

strace 用法

發(fā)布時間:2024/1/17 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 strace 用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

strace常用來跟蹤進(jìn)程執(zhí)行時的系統(tǒng)調(diào)用和所接收的信號。 在Linux世界,進(jìn)程不能直接訪問硬件設(shè)備,當(dāng)進(jìn)程需要訪問硬件設(shè)備(比如讀取磁盤文件,接收網(wǎng)絡(luò)數(shù)據(jù)等等)時,必須由用戶態(tài)模式切換至內(nèi)核態(tài)模式,通 過系統(tǒng)調(diào)用訪問硬件設(shè)備。strace可以跟蹤到一個進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時間。


輸出參數(shù)含義

-c?統(tǒng)計每一系統(tǒng)調(diào)用的所執(zhí)行的時間,次數(shù)和出錯的次數(shù)等.? -d?輸出strace關(guān)于標(biāo)準(zhǔn)錯誤的調(diào)試信息.? -f?跟蹤由fork調(diào)用所產(chǎn)生的子進(jìn)程.? -ff?如果提供-o?filename,則所有進(jìn)程的跟蹤結(jié)果輸出到相應(yīng)的filename.pid中,pid是各進(jìn)程的進(jìn)程號.? -F?嘗試跟蹤vfork調(diào)用.在-f時,vfork不被跟蹤.? -h?輸出簡要的幫助信息.? -i?輸出系統(tǒng)調(diào)用的入口指針.? -q?禁止輸出關(guān)于脫離的消息.? -r?打印出相對時間關(guān)于,,每一個系統(tǒng)調(diào)用.? -t?在輸出中的每一行前加上時間信息.? -tt?在輸出中的每一行前加上時間信息,微秒級.? -ttt?微秒級輸出,以秒了表示時間.? -T?顯示每一調(diào)用所耗的時間.? -v?輸出所有的系統(tǒng)調(diào)用.一些調(diào)用關(guān)于環(huán)境變量,狀態(tài),輸入輸出等調(diào)用由于使用頻繁,默認(rèn)不輸出.? -V?輸出strace的版本信息.? -x?以十六進(jìn)制形式輸出非標(biāo)準(zhǔn)字符串? -xx?所有字符串以十六進(jìn)制形式輸出.? -a?column? 設(shè)置返回值的輸出位置.默認(rèn)?為40.? -e?expr? 指定一個表達(dá)式,用來控制如何跟蹤.格式如下:? [qualifier=][!]value1[,value2]...? qualifier只能是?trace,abbrev,verbose,raw,signal,read,write其中之一.value是用來限定的符號或數(shù)字.默認(rèn)的?qualifier是?trace.感嘆號是否定符號.例如:? -eopen等價于?-e?trace=open,表示只跟蹤open調(diào)用.而-etrace!=open表示跟蹤除了open以外的其他調(diào)用.有兩個特殊的符號?all?和?none.? 注意有些shell使用!來執(zhí)行歷史記錄里的命令,所以要使用\\.? -e?trace=set? 只跟蹤指定的系統(tǒng)?調(diào)用.例如:-e?trace=open,close,rean,write表示只跟蹤這四個系統(tǒng)調(diào)用.默認(rèn)的為set=all.? -e?trace=file? 只跟蹤有關(guān)文件操作的系統(tǒng)調(diào)用.? -e?trace=process? 只跟蹤有關(guān)進(jìn)程控制的系統(tǒng)調(diào)用.? -e?trace=network? 跟蹤與網(wǎng)絡(luò)有關(guān)的所有系統(tǒng)調(diào)用.? -e?strace=signal? 跟蹤所有與系統(tǒng)信號有關(guān)的?系統(tǒng)調(diào)用? -e?trace=ipc? 跟蹤所有與進(jìn)程通訊有關(guān)的系統(tǒng)調(diào)用? -e?abbrev=set? 設(shè)定?strace輸出的系統(tǒng)調(diào)用的結(jié)果集.-v?等與?abbrev=none.默認(rèn)為abbrev=all.? -e?raw=set? 將指?定的系統(tǒng)調(diào)用的參數(shù)以十六進(jìn)制顯示.? -e?signal=set? 指定跟蹤的系統(tǒng)信號.默認(rèn)為all.如?signal=!SIGIO(或者signal=!io),表示不跟蹤SIGIO信號.? -e?read=set? 輸出從指定文件中讀出?的數(shù)據(jù).例如:? -e?read=3,5? -e?write=set? 輸出寫入到指定文件中的數(shù)據(jù).? -o?filename? 將strace的輸出寫入文件filename? -p?pid? 跟蹤指定的進(jìn)程pid.? -s?strsize? 指定輸出的字符串的最大長度.默認(rèn)為32.文件名一直全部輸出.? -u?username? 以username?的UID和GID執(zhí)行被跟蹤的命令


通用的完整用法

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

上面的含義是 跟蹤28979進(jìn)程的所有系統(tǒng)調(diào)用(-e trace=all),并統(tǒng)計系統(tǒng)調(diào)用的花費(fèi)時間,以及開始時間(并以可視化的時分秒格式顯示),最后將記錄結(jié)果存在output.txt文件里面。


限制strace只跟蹤特定的系統(tǒng)調(diào)用


如果你已經(jīng)知道你要找什么,你可以讓strace只跟蹤一些類型的系統(tǒng)調(diào)用。例如,你需要看看在configure腳本里面執(zhí)行的程序,你需要監(jiān)視的系統(tǒng)調(diào) 用就是execve。讓strace只記錄execve的調(diào)用用這個命令:

strace?-f?-o?configure-strace.txt?-e?execve?./configure



本文摘自?http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html

?


轉(zhuǎn)載于:https://blog.51cto.com/purplegrape/1591932

總結(jié)

以上是生活随笔為你收集整理的strace 用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。