strace

軟件截圖:
strace
軟件詳細信息:
版本: 4.19 更新
上傳日期: 23 Nov 17
許可: 免費
人氣: 23

Rating: 5.0/5 (Total Votes: 1)

strace是一個為開發人員和系統管理員設計的免費開源軟件,提供了一個用C語言實現的系統調用跟踪器,專門用於在GNU / Linux操作系統下運行。


該程序是一個非常有用的調試,指導和診斷工具,可以收集程序或進程生成的所有系統調用,並打印出一個跟踪。它是一個只能從控制台環境或通過終端模擬器應用程序使用的命令行程序。


該工具可供診斷人員,疑難解答人員以及希望獲得解決關閉源程序問題的無價值解決方案的系統管理員使用。它由Dmitry V. Levin,Roland McGrath和Wichert Akkerman撰寫。


命令行選項
與其他命令行軟件一樣,strace提供了多種命令行選項,使用戶可以輕鬆使用其所有功能和功能,以實現其任務。所有的命令行選項都可以通過運行“strace --help’命令。

在最令人感興趣的命令行選項中,我們可以提到對每個系統調用的計數次數,調用和錯誤的支持,對系統調用延遲進行匯總的支持,對某個路徑的跟踪訪問的支持,支持調試輸出到stderr,以及支持將追踪程序作為獨立的孫子運行,而不是作為父母來運行。


此外,您將能夠將跟踪信息發送到特定文件而不是stderr,將跟踪系統調用的開銷設置為開銷usecs,為跟踪進程設置PID文件,限制打印字符串的長度來分類字符,運行命令作為處理setgid和/或setuid的用戶名,以及分離特定的系統調用。


Strace入門
strace只作為一個源代碼tarball發布,但是它可以很容易地從他們的主要軟件庫安裝在大量的Linux發行版上。要從源代碼安裝,只需從Softoware下載最新版本,將存檔保存到您選擇的位置並將其解壓。

打開一個終端應用程序,進入提取的檔案文件的位置(例如cd /home/softoware/strace-4.9),運行./configure && make’命令來配置和編譯strace,然後執行“make install”命令為root或者“sudo make install”命令作為特權用戶來安裝系統範圍。

  • 改進:
  • 添加了-yy選項來打印與套接字描述符相關的協議和地址信息。
  • 擴展“-e read = set”和“-e write = set”覆蓋sendmsg,recvmsg,sendmmsg和recvmmsg系統調用的選項。
  • 實施ioctl命令的完整32位解碼(解決Debian bug#692913和Fedora bug#902788)。
  • 在ia64上實施了PTRACE_GETREGS API支持
  • 在mips上實施了PTRACE_GETREGS API支持
  • 在s390 / s390x上實施了PTRACE_GETREGSET API支持。
  • 實施getrandom和seccomp系統調用的解碼。
  • 實施完整的64位能力集解碼。
  • 執行所有prctl命令的解碼。
  • 實現參數化ioctl命令的解碼。
  • 執行evdev ioctl命令的解碼。
  • 執行v4l ioctl命令的解碼。
  • 實施了SG_IO v4 ioctl命令的解碼。
  • 實現了FIFREEZE / FITHAW / FITRIM ioctl命令的解碼。
  • 實現了FALLOC_FL_ * fallocate標誌的解碼。
  • 在aarch64,x32和x86_64上執行rt_sigreturn信號掩碼的解碼。
  • 增強的套接字解​​碼器支持藍牙套接字。
  • 增強對未列出的ioctl命令的解碼。
  • 增強了對getsockopt和setsockopt系統調用的解碼。
  • 增強了對sysinfo syscall的解碼。
  • 增強了對struct cmsghdr的解碼。
  • 增強對等待狀態的解碼。
  • 使用外部libaio.h增強了對非x86架構的aio支持。
  • 將O_TMPFILE新增至識別的開放模式標誌清單。
  • 更新解碼statfs系列調用中使用的文件系統類型常量列表。
  • 更新了CAP_ *,PR_ *,PTRACE_ *,SCHED_ *,SO_ *,SOL_ *,SWAP_FLAG_ *和TFD_ *常量列表。
  • 更新來自Linux 3.19的信號常數列表
  • 從Linux 3.19更新了errno常量列表
  • 更新了Linux 3.9的ioctl命令列表。
  • 添加了新的系統調用條目以匹配Linux 3.19。
  • 錯誤修正:
  • 修復了系統調用號碼和相關信息(如係統調用參數數量,系統調用名稱和系統調用解碼器)之間映射的各種錯誤。
  • 修正打印描述符,文件名,網絡接口名稱,struct utsname成員,BLK * ioctl命令的設備/卷名稱中的引用問題。
  • 修正了uid_t / git_t解碼。
  • 修正getdents / getdents64解碼器中潛在的出界問題。
  • 修復了某些體系結構上潛在的開放標誌截斷問題。
  • 修正了struct ifreq.ifr_name的解碼。
  • 修正了SIOCSIFNAME ioctl命令的解碼。
  • 修正了RENAME_ * renameat2標誌的解碼。
  • 修正了UTIME_NOW / UTIME_OMIT timeval結構的解碼。
  • 在某些體系結構上修復間接ipc子調用的解碼。
  • 在32位架構上固定解碼fanotify_mark系統調用。
  • 修正了64位架構上32位統計結構的解碼問題。
  • 修正了64位架構上32位struct cmsghdr的解碼問題。
  • 在64位架構上固定解碼32位preadv / pwritev偏移。
  • 在ia64,ppc,ppc64,sparc,sparc64,mips和s390上修復sigreturn / rt_sigreturn信號掩碼的解碼。
  • 固定指令指針輸出(-i選項)支持多個個性的架構。
  • 修正了“-e read = set”的行為和“-e write = set”當讀寫組相交時。
  • 修正了struct sigaction中沒有sa_restorer成員的系統。
  • 使用uclibc和musl libc修正了版本。
  • 可移植性:
  • Linux內核> = 2.5.46是必需的。舊版本沒有體面的PTRACE_SETOPTIONS支持將無法正常工作。
  • 在mips上,linux內核> = 2.6.15是必需的。沒有體面的PTRACE_GETREGS支持的舊版本將不起作用。
  • 在s390和s390x上,linux內核> = 2.6.27是必需的。沒有體面的PTRACE_GETREGSET支持的舊版本將不起作用。
4.9版中的新功能:

行為改變:
  • 默認情況下禁用ARM EABI系統上的OABI支持,添加--enable-arm-oabi選項以在配置時啟用它。
  • 改進:
  • 在每個跟踪的系統調用之後添加實驗-k選項以打印堆棧跟踪。
  • 添加了-w選項,可以在系統調用延遲上生成統計信息。 (解決Debian bug#457497)。
  • 增加了ARC體系結構支持。
  • 在PowerPC上添加了PTRACE_GETREGS API支持。
  • 增強的仿生libc和musl libc支持。
  • 增強了對x86_64和x32上x86個性進程的追踪。
  • 增強了對AArch64上ARM個性進程的跟踪。
  • PowerPC上增強的32/64位個性檢測。
  • 實現了add_key,ioprio_get,ioprio_set,kexec_load,keyctl,renameat2和request_key系統調用的解碼。
  • 對select,pselect和io_submit系統調用進行了強有力的解碼。
  • 增強了對delete_module,fanotify_init,fanotify_mark,fcntl,setdomainname,sethostname,setns和sync_file_range系統調用的解碼。
  • 增強了對信號位掩碼的解碼。
  • 增強了對文件描述符的解碼。
  • 增強siginfo_t解碼功能。
  • 增強了PF_NETLINK解碼。
  • 更新了CLOCK_ *常量(地址為Fedora bug#1088455)。
  • 添加了新的系統調用條目以匹配Linux 3.16。
  • 錯誤修正:
  • 在內存映射相關的系統調用集中添加了shmat和shmdt。
  • 修正了從停止的進程中分離。
  • 在32位架構上修正fanotify_mark解碼。
  • 在preadv和pwritev系統調用中修復了偏移量解碼。
  • 修正了在_FORTIFY_SOURCE模式下為glibc選擇解碼。
  • 使用EPOLL_CTL_DEL參數固定解碼epoll_ctl系統調用。
  • 修正了何時發生衝突(解決了Fedora bug#993384)。
  • 手冊頁中的其他更正。 (解決Debian bug#725987)。
  • :版本4.8中新增功能:

    行為改變:
  • 在正常strace終止的情況下,當trace輸出被重定向到管道時,strace現在關閉它並在退出之前等待管道進程終止。
  • 改進:
  • 使用PTRACE_SEIZE API(可用時)實施跟踪。
  • 在x86-64和x32上執行更可靠的基於PTRACE_GETREGSET的進程個性檢測(當可用時)。
  • 添加了-e trace =內存選項,用於跟踪與內存映射相關的系統調用。
  • 記錄的-b選項。
  • 允許退出狀態消息通過給予-q選項兩次來消除。
  • 新增AArch64體系結構支持(解決Debian bug#693074和Fedora bug#969858)。
  • 增加了對OpenRISC 1000,Meta和Xtensa架構的支持。
  • 為Tile添加了tilegx個性化支持。
  • 增強了對NOMMU體系結構的支持。
  • 增強了對getdents,mmap,perf_event_open,ptrace和quotactl系統調用的解碼。
  • 添加了新的系統調用條目以匹配Linux 3.9。
  • 從Linux 3.9重新生成常用的ioctl名稱列表。
  • 更新了errno常量列表。
  • 更新了AF_ *,MADV_ *,MAP_ *,MSG_ *,MS_ *,PF_ *,PR_ *,PTRACE_O_ *和TCP_ *常量的列表。
  • 實施UBI ioctls的解碼。
  • 刪除多餘的“* 32” ioctl名稱。
  • 錯誤修正:
  • 修復了ERESTARTNOINTR洩漏到古代內核的用戶空間(地址為Fedora bug#659382)。

  • 修復了內核釋放字符串解析(地址Debian bug#702309)。
  • 修復了* xattr系統調用(地址為Fedora bug#885233)。
  • 修正了32位strace處理64位索引節點文件的問題(地址為Fedora bug#912790)。
  • 在SPARC上修正了追踪叉。
  • 修復了fadvise64,fallocate,ftruncate64,io_submit,pread,preadv,pwrite,pwritev,readahead,sigaltstack,sync_file_range,sysctl和truncate64系統調用的解碼。
  • 在大多數支持的體系結構上修復了多個系統調用的類別。
  • 修復了非本地32位個性recv [m] msg syscalls的解碼問題。
  • 修復了x32上多個32位個性系統調用的解碼問題。
  • 修正了在ARM,MIPS / o32,PowerPC,S390x和Tile體系結構上長時間的系統調用參數的解碼。
  • 在S390x上修復了semtimedop解碼。
  • 修正了Blackfin上的sram_alloc解碼。
  • 修正了process_vm_readv是刺的構建。
  • 使用舊版本的libaio.h修正版本。
  • 4.7版本中的新增功能:

    • 這是一個穩定的版本,通常的錯誤修正,對新鮮Linux內核的增強支持,以及其他改進。
    4.6版本中的新功能:

    • 這是一個穩定版本,通常有缺陷修復,對於新鮮的Linux內核以及其他改進,包括使用Linux內核的顯式工具跟踪創建線程和子進程的克隆,fork和vfork系統調用的新方法。
    在4.5.20版本中,新功能:

    • 改進:
    • 實施新的linux系統調用解碼:inotify_init1,recvmmsg。
    • 實現新的linux系統調用的基本解碼:preadv,pwritev,rt_tgsigqueueinfo,perf_event_open。
    • 通過用先前為x86 / x86-64啟用的精心設計的解析器取代裸解碼器,增強了對非x86架構上最近添加的系統調用的解碼能力。
    • 實現-C選項來組合常規和-c輸出。 (解決Debian bug#466196)
    • 增強了對mbind和mremap系統調用的解碼。
    • 增強了SOL_PACKET套接字選項解碼。
    • 從linux 2.6.33重新生成ioctl名稱列表。
    • 增加了TILE架構支持。
    • 錯誤修正:
    • 使用Linux內核頭文件2.6.32-rc5 +修正版本。 (解決Debian bug#560516和Fedora bug#539044)
    • 修正了mips的構建。
    • 修復了沒有struct statfs64的Linux系統的處理。
    • 通過powerpc上的sigreturn修復報告信號掩碼。
    • 修正選擇解碼器中潛在的堆棧緩衝區溢位。 (解決Fedora bug#556678)
    • 更正了msgsnd間接ipccall解碼。
    • 更正了64位系統調用的解碼。 (解決Debian bug#570603)
    • 更正架構上的getsockopt解碼,其中sizeof(long)>的sizeof(int)的。 (解決Debian bug#494844)
    • 糾正了epoll_pwait的解碼。 (解決Debian bug#513014)
    • 更正了殺死線程的處理。

    類似的軟件

    xtrace
    xtrace

    11 May 15

    ipdbplugin
    ipdbplugin

    11 May 15

    mpatrol
    mpatrol

    3 Jun 15

    意見 strace

    評論沒有發現
    添加評論
    打開圖片!