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)
    • 更正了杀死线程的处理。

    类似的软件

    dprintf
    dprintf

    20 Feb 15

    YARI
    YARI

    12 May 15

    UpStare
    UpStare

    20 Feb 15

    Linaro GDB
    Linaro GDB

    20 Feb 15

    意见 strace

    评论没有发现
    添加评论
    打开图片!