Linux應(yīng)用調(diào)試之strace命令詳解
1.strace簡介
strace常用來跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào)。 通過strace可以知道應(yīng)用程序打開了哪些文件,以及讀寫了什么內(nèi)容,包括消耗的時(shí)間以及返回值等。在Linux世界,進(jìn)程不能直接訪問硬件設(shè)備,當(dāng)進(jìn)程需要訪問硬件設(shè)備(比如讀取磁盤文件,接收網(wǎng)絡(luò)數(shù)據(jù)等等)時(shí),必須由用戶態(tài)模式切換至內(nèi)核態(tài)模式,通 過系統(tǒng)調(diào)用訪問硬件設(shè)備。strace可以跟蹤到一個(gè)進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時(shí)間。
2.安裝strace命令
首先需要以下兩個(gè)文件:
strace-4.5.15.tar.bz2 strace-fix-arm-bad-syscall.patch
步驟如下:
#tar -xjf strace-4.5.15.tar.bz2 #cd strace-4.5.15/ #patch -p1 <../strace-fix-arm-bad-syscall.patch //“p1”值去掉補(bǔ)丁的第一個(gè)路徑 “<”指補(bǔ)丁文件位置,“../” 指返回上個(gè)目錄 #./configure --host=arm-linux CC=arm-linux-gcc //配置configure #make //生成strace命令文件
然后將strace命令文件,放入我們開發(fā)板的根目錄/bin中,便能使用了
#cp strace /nfs_root/bin/ //nfs_root:開發(fā)板的nfs系統(tǒng)根目錄
3.strace命令使用
常用參數(shù)如下所示:
-o 指定跟蹤信息的輸出文件
-t 記錄跟蹤信息的時(shí)間,以S為單位
-tt 記錄跟蹤信息的時(shí)間,以u(píng)S為單位
4.實(shí)例
通過strace來測試led_text應(yīng)用程序
#insmod led.ko //裝載led驅(qū)動(dòng) # strace -o log.txt ./led_text led1 on //測試led_text應(yīng)用程序,打開led1,并將跟蹤信息輸出到log.txt中
其中l(wèi)og.txt的內(nèi)容如下所示:
總結(jié)
以上所述是小編給大家介紹的Linux應(yīng)用調(diào)試之strace命令詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
linux shell 自定義函數(shù)方法(定義、返回值、變量作用域)
linux shell 可以用戶定義函數(shù),然后在shell腳本中可以隨便調(diào)用。下面說說它的定義方法,以及調(diào)用需要注意那些事項(xiàng)2014-09-09shell腳本快速創(chuàng)建、格式化、掛載新添加的磁盤實(shí)現(xiàn)方法詳解
這篇文章主要介紹了shell腳本快速創(chuàng)建、格式化、掛載新添加的磁盤實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10shell一鍵部署Zabbix的實(shí)現(xiàn)步驟
本文主要介紹了shell一鍵部署Zabbix的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-02-02Shell腳本實(shí)現(xiàn)監(jiān)控rsync數(shù)據(jù)是否傳輸完
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)監(jiān)控rsync數(shù)據(jù)是否傳輸完,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12linux echo命令以及l(fā)inux echo命令提示權(quán)限不夠的解決辦法
linux的echo命令, 在shell編程中極為常用, 在終端下打印變量value的時(shí)候也是常常用到的, 因此有必要了解下echo的用法。下面通過本文給大家介紹linux echo命令以及l(fā)inux echo命令提示權(quán)限不夠的解決辦法,感興趣的朋友一起看看吧2017-09-09shell子進(jìn)程多任務(wù)實(shí)現(xiàn)進(jìn)程高并發(fā)
本文主要介紹了shell子進(jìn)程多任務(wù)實(shí)現(xiàn)進(jìn)程高并發(fā),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07linux 比較兩個(gè)文件夾diff不同 (diff命令, md5列表)
這篇文章主要介紹了linux 比較兩個(gè)文件夾diff不同 (diff命令, md5列表),比較文件夾diff,可以直接使用diff命令,也可以比較文件md5列表,下面通過實(shí)例給大家介紹下,感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05