<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 1. 命令簡介 strace 命令是一個集診斷、調試、統計于一體的工具,我們可以使用 strace 對程序的系統調用和信號傳遞的跟蹤結果來對程序進行分析,以達到解決問題或者是了解程序工作過程的目的。當然strace 與專業的調試工具比如說 gdb 之類的是沒法相比的,因為它不是一個專業的調試器。 <br /> strace 的最簡單的用法就是執行一個指定的命令,在指定的命令結束之后它也就退出了。在命令執行的過程中,strace 會記錄和解析命令進程的所有系統調用以及這個進程所接收到的所有的信號值。 <br /> ## 2. 選項說明 ~~~ -c 統計每個系統調用的時間、次數和錯誤,并在程序退出時報告摘要 -C 類似于 -c,但在進程運行時也打印常規輸出 -D 將跟蹤進程作為分離的孫進程運行,而不是作為跟蹤對象的父進程運行。這通過保持跟蹤對象是調用進程的直接子進程來減少 strace 的可見效果 -d 輸出 strace 關于標準錯誤的調試信息 -f 跟蹤由 fork(2), vfork(2) and clone(2) 調用所產生的子進程 -ff 如果提供 -o FILENAME,則所有進程的跟蹤結果輸出到相應的 FILENAME.pid 中,pid 是各進程的進程號 -F 該選項已廢棄,作用等同于 -f -h 輸出簡要的幫助信息 -i 在系統調用時打印指令指針 -q 禁止附加、分離等信息。當輸出被重定向到文件并直接運行命令而不是附加命令時,這將自動發生 -qq 如果給定兩次,則禁止關于進程退出狀態的消息 -r 在每次系統調用進入時打印相對時間戳。它記錄連續系統調用開始之間的時間差 -t 在輸出中的每一行前加上時間信息 -tt 如果給定兩次,在輸出中的每一行前加上微秒級的時間信息 -ttt 如果給定三次,則打印的時間將包括微秒,并且開始部分將打印自紀元以來的秒數 -T 顯示每一系統調用所耗的時間 -v 輸出所有的系統調用。一些調用關于環境變量,狀態,輸入輸出等調用,由于使用頻繁默認不輸出 -V 輸出 strace 的版本信息. -x 以十六進制形式輸出非標準字符串 -xx 所有字符串以十六進制形式輸出 -y 與文件描述符參數關聯的打印路徑 -a COLUMN 設置返回值的輸出位置,默認為40 -b SYSCALL 如果達到指定的系統調用,與跟蹤進程分離。目前,只支持 execve。如果希望跟蹤多線程進程,因此需要 -f,但不希望跟蹤其(可能非常復雜的)子進程,則此選項非常有用 -e EXPR 指定一個表達式,用來控制如何跟蹤。格式如下: [qualifier=][!]value1[,value2]... qualifier 只能是 trace, abbrev, verbose, raw, signal, read, write 其中之一。value 是用來限定的符號或數字。默認的 qualifier 是 trace,感嘆號是否定符號。例如:-e open 等價于 -e trace=open,表示只跟蹤 open 調用。而 -etrace=!open 表示跟蹤除了 ope 以外的所有其他調用。有兩個特殊的符號 all 和 none,分別表示跟蹤所有和不跟蹤任何系統調用。注意有些 Shell 使用 ! 來執行歷史記錄里的命令,所以要使用反斜杠對 ! 進行轉義 -e trace=SET 只跟蹤指定的系統調用。例如: -e trace=open,close,rean,write 表示只跟蹤這四個系統調用,默認的為 trace=all -e trace=file 只跟蹤有關文件操作的系統調用 -e trace=process 只跟蹤有關進程控制的系統調用 -e trace=network 跟蹤與網絡有關的所有系統調用 -e strace=signal 跟蹤所有與系統信號有關的系統調用 -e trace=ipc 跟蹤所有與進程通訊有關的系統調用 -e trace=desc 跟蹤所有與文件描述符相關的系統調用 -e trace=memory 跟蹤所有與內存映射相關的系統調用 -e abbrev=SET 縮寫打印大型結構的每個成員的輸出。默認值是 abbrev=all。-v 選項的效果是 abbrev=none -e verbose=SET 為指定的系統調用集取消引用結構。默認是 verbose=all -e raw=SET 將指定的系統調用的參數以十六進制顯示 -e signal=SET 指定跟蹤的系統信號,默認為 signal=all。如 signal=!SIGIO(或 signal=!io),表示不跟蹤 SIGIO 信號 -e read=SET 輸出從指定文件描述符中讀出的數據。例如:-e read=3,5 -e write=SET 輸出寫入到指定文件中的數據 -o FILENAME 將 strace 的輸出寫入指定文件 -O OVERHEAD 將跟蹤系統調用的開銷設置為指定的微秒 -p PID 跟蹤指定的進程 -P PATH 只跟蹤系統調用的訪問路徑。多個 -P 選項可用于指定多個路徑 -s STRSIZE 指定輸出的字符串的最大長度,默認為 32。注意,文件名不被認為是字符串,總是全部打印 -S SORTBY 根據指定的條件對 -c 選項打印的直方圖的輸出進行排序。SORTBY 合法值是 time、calls、name 和 nothing,默認值是 time -u USERNAME 以指定用戶的 UID、GID 和補充組執行被跟蹤的命令 -E VAR=VAL 為命令設置環境變量 -E VAR 從繼承的環境變量列表中刪除變量 VAR,然后將其傳遞給命令 ~~~ <br /> ## 3. 常用示例 ``` strace -f -p 2554(pid) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看