Articles of strace

轮询系统调用超时

附加strace显示了很多这些消息: poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout) poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout) poll([{fd=5, events=POLLIN}, {fd=6, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}, {fd=9, events=POLLIN}, {fd=10, events=POLLIN}], 6, 0) = 0 (Timeout) poll([{fd=5, events=POLLIN}, {fd=6, […]

即使在大括号中,也可以用strace显示完整的参数

我知道-s选项应该显示更长的参数,但它并不总是工作(可能是因为那些花括号意味着数组或嵌套参数?)。 即使在运行strace -s1000 my_command该参数仍然被截断: ioctl(3,SNDCTL_TMR_TEMPO或TCGETA,{B9600 -opost -isig -icanon -echo …})= 0 我怎样才能看到完整的论点?

如何在Linux中跟踪每个文件的IO操作?

我需要跟踪read特定文件的系统调用,而我目前正在通过parsingstrace的输出来做到这一点。 由于read操作文件描述符,我必须跟踪fd和path之间的当前映射。 另外,必须监视seek以保持跟踪中当前位置的最新状态。 在Linux中有更好的方法来获得每个应用程序,每个文件path的IO跟踪吗?

如何解释strace输出?

我需要描述我正在使用strace的应用程序的性能。 但是,我真的不知道如何解释strace发出的各种系统调用。 其中几个例子如下: (A) lseek(3, 1600, SEEK_SET) = 1600 (B) write(3, "G_DATA 300 0 "…, 800) = 800 (C) close(3) = 0 (D) mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b600b179000 (E) munmap(0x2b600b179000, 4096) = 0 (F) fstat(3, {st_mode=S_IFREG|0644, st_size=1600, …}) = 0 如果有人能简单地用简单的英语来解释从(A)到(F)这些行在I / O,数据传输,performance的意义等方面的真正含义,我将不胜感激。 我经历了一大堆,但还是不太自信。 如果你有任何其他的指针让我阅读,那就太好了。 我对操作系统有一些背景知识,并了解系统调用,内存,虚拟内存,调度等等。

ltrace相当于osx?

osx有非常强大的dtrace / ktrace / dtruss工具 – 但是我不愿意花时间学习处理它们的时间。 在OSX上获得linux ltrace(可能是strace)的等价function最简单的方法是什么?

如何拦截linux信号? (在C)

我需要拦截和跟踪来自任何二进制文件的信号,比如strace在linux下。 我不需要像真正的strace那样输出如此冗长的输出。 我只是想知道它是如何工作的,我怎样才能拦截信号,怎样才能追踪它们。 提前致谢 :)

当程序打开特定文件时gdb中断

背后的故事:在strace下运行程序时,我注意到'/ dev / urandom'正在被open 。 我想知道这个调用来自哪里(这不是程序本身的一部分,它是系统的一部分)。 所以,使用gdb,我打算catch syscall open (使用catch syscall open )程序执行时, open调用发出,所以我可以看到一个回溯。 问题是open被称为很多 ,像几百倍,所以我不能缩小打开/ dev / urandom的具体调用。 我应该如何去缩小具体的电话? 有没有一种方法来过滤参数,如果是的话,我怎么做一个系统调用? 任何build议都会有所帮助 – 也许我正在做的这一切都是错误的。

如何使用strace跟踪subprocess?

我用strace简单地附加到一个过程。 该进程创build了90个线程。 当我发现有问题的线程时,我不得不单调地search父线程,然后是祖父线程,一直到根进程。 有没有一个技巧或工具来快速找出哪个线程创build另一个线程? 或者更好的是,像pstree一样打印线程创build树?

Windows的Systrace

我正在寻找一个相当于Systrace的Windows或至lessstrace 。 我知道StraceNT ,但想知道是否有更多的select。 具体来说,我正在寻找一种以编程方式强制执行系统调用策略的具体方式,尽pipe这可能是事后而不是主动阻止它们。 目前有没有一种好的方法呢?