strace除錯的常用方法

2021-09-22 10:09:02 字數 2215 閱讀 4423

一 將strace結果輸出到檔案

1 格式

-o filename 或  2>filename

2 實戰

[root@localhost charpter05]# strace -c -o test.txt ./test88

[root@localhost charpter05]# strace -c ./test 2>test2.txt88

[root@localhost charpter05]# diff test.txt test2.txt

3 說明

比較結果一樣,說明兩個命令等價。

二 將系統每個呼叫的時間列印出來

1 格式

-t2 實戰

[root@localhost charpter05]# strace -t ./test

[root@localhost charpter05]# strace -t ./test

execve("./test", ["./test"], [/* 25 vars */]) = 0 <0.000422>

brk(null) = 0x181d000 <0.000194>

mmap(null, 4096, prot_read|prot_write, map_private|map_anonymous, -1, 0) = 0x7fae23c80000 <0.000212>

access("/etc/ld.so.preload", r_ok) = -1 enoent (no such file or directory) <0.000158>

open("/etc/ld.so.cache", o_rdonly|o_cloexec) = 3 <0.000135>

fstat(3, ) = 0 <0.000163>

mmap(null, 35467, prot_read, map_private, 3, 0) = 0x7fae23c77000 <0.000133>

close(3) = 0 <0.000139>

open("/lib64/libstdc++.so.6", o_rdonly|o_cloexec) = 3 <0.000139>

......

3 說明

呼叫execve函式花費0.000422s,呼叫mmap花費0.000212

三 記錄每次系統呼叫發生的時間

1 格式

-t 或 -tt 或 -ttt 記錄每次系統呼叫發生的時間,分別精確到秒、微秒和unix時間戳的微秒。

2 實戰

[root@localhost charpter05]# strace -t ./test

14:49:07 execve("./test", ["./test"], [/* 25 vars */]) = 0

14:49:07 brk(null) = 0x19e9000

14:49:07 mmap(null, 4096, prot_read|prot_write, map_private|map_anonymous, -1, 0) = 0x7fa13b206000

14:49:07 access("/etc/ld.so.preload", r_ok) = -1 enoent (no such file or directory)

14:49:07 open("/etc/ld.so.cache", o_rdonly|o_cloexec) = 3

14:49:07 fstat(3, ) = 0

14:49:07 mmap(null, 35467, prot_read, map_private, 3, 0) = 0x7fa13b1fd000

14:49:07 close(3) = 0

......

3 說明

從結果可知,這幾個系統呼叫都是在14:49:07這一秒發生的。

四 追蹤現有的程序

1 格式

strace -p pid

其中,pid是指程序id。

2 說明

strace不光能初始化乙個程序進行strace,還能追蹤現有的程序。

除錯技巧 三 strace

在linux系統中,strace是一種相當有效的跟蹤工具,它的主要特點是可以被用來監視系統呼叫。我們不僅可以用strace除錯乙個新開始的程式,也可以除錯乙個已經在執行的程式 這意味著把strace繫結到乙個已有的pid上 對於globalmem字元裝置檔案,以strace方式執行如 所示的使用者空...

除錯工具Strace

0.strace是什麼?按照strace官網的描述,strace是乙個可用於診斷 除錯和教學的linux使用者空間 我們用它來監控使用者空間程序和核心的互動,比如系統呼叫 訊號傳遞 程序狀態變更等。原始碼 1.編譯移植strace configure prefix pwd install 以x86平...

strace 除錯linux 程式

strace常用引數 c 統計每種系統呼叫執行的時間 呼叫次數 出錯次數,程式退出時給出報告 p pid 跟蹤指定的程序,可以使用多個 p同時跟蹤多個程序 o filename strace預設輸出到stdout,o可以將輸出寫入到指定的檔案 f 跟蹤由fork產生的子程序的系統呼叫 ff 常與 o...