问题标签 [strace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 我如何使用 strace 来了解我的 C 程序中的系统调用
我想知道如何使用 strace 来跟踪我的 C 程序中的系统调用以及如何使用它来调试我的代码。
linux - 在 chroot 中执行服务(openoffice headless)很慢
我创建了一个 ubuntu chroot 环境(使用 debootstrap)并将 openoffice 作为服务启动,以使用 unoconv 转换文件。它可以工作,但它花费大约 20 秒来进行转换,在 chroot 监狱外低于 1 秒。跟踪它,我可以看到这些额外的时间花在了一些超时过期的套接字操作上,这些操作在没有 chroot 环境的情况下也能正常工作。但是,类似的操作可以正常工作。
有什么建议吗?
启动服务器(chroot):
调用它(也被 chroot):
超时跟踪:
没有超时的类似跟踪(相同的 unoconv 操作):
chroot 详细信息:
- 使用 dchroot 作为普通用户使用
将 dev、proc 等安装为(fstab):
/tmp /var/local/chrootest/tmp
/dev /var/local/chrootest/dev
/sys /var/local/chrootest/sys
proc-chroot /var/local/chrootest/proc
devpts-chroot /var/local/chrootest /dev/pts
mpi - 将 strace 与 mpiexec 一起使用
如何从 mpiexec (MPICH2, linux) 开始跟踪 MPI 并行作业的所有进程?
-o
会弄乱不同进程的输出
PS 致一些编辑:谁可能会这么认为MPICH is the name of the library. MPICH2 is a particular version.
。MPICH2 实际上是MPICH2 is an all-new implementation of MPI
,我有时不得不同时使用 mpich 和 mpich2。所以,我们不能用 mpich 代替 mpich2。
macos - 如何让 dtrace 以非 root 权限运行跟踪的命令?
OS X 缺少 linux 的strace
,但它dtrace
应该更好。
但是,我想念对单个命令进行简单跟踪的能力。例如,在 linux 上,我可以写strace -f gcc hello.c
来捕获所有系统调用,这给了我编译器编译我的程序所需的所有文件名的列表(优秀的memoize脚本就是建立在这个技巧上的)
我想在 mac 上移植 memoize,所以我需要某种strace
. 我真正需要的是gcc
读取和写入的文件列表,所以我需要的是更多的truss
. 果然我可以说dtruss -f gcc hello.c
并获得一些相同的功能,但是编译器以root权限运行,这显然是不可取的(除了巨大的安全风险之外,一个问题是该a.out
文件现在由root拥有:-)
然后我尝试dtruss -f sudo -u myusername gcc hello.c
了,但这感觉有点不对劲,无论如何都不起作用(我一直没有a.out
文件,不知道为什么)
这么长的故事试图激发我最初的问题:我如何才能像在 linux 中dtrace
那样以普通用户权限运行我的命令?strace
编辑:似乎我不是唯一一个想知道如何做到这一点的人:问题#1204256与我的几乎相同(并且具有相同的次优 sudo 答案:-)
php - 为什么 apache 每次都在 recv()-ing 15 秒?
我有基于 ZendFramework 的应用程序,它使用 XMLRPC 与其他 ZendFramework 应用程序通信。两者都在同一台服务器上(用于开发)。这种沟通非常缓慢,我正在尝试找出原因。分析后,我发现 ZF Lib XMLRPC 阅读器的 fgets() 速度变慢了。
在对基于 ZendFramework 的 PHP 应用程序进行 strace 时,我得到了一些带有 recv() 等待 15 秒的模式?任何人都知道为什么会发生这种情况?
python - Python file.read() 在后台获取比必要更多的数据
但 strace 说
正如你在上面看到的 -
读取(3,“导入系统\ndef file_open(文件名”...,4096)= 150
当程序说只读取 3 个字节时,为什么 read() 返回 150 个字节?
unix - Unix strace 命令
我找到了以下 bash 脚本来监控 cp 进度。
我不明白 strace 命令的“-ewrite”选项。我发现的最接近的是 strace 的手册页,它是
-e write=set 对写入指定集合中列出的文件描述符的所有数据执行完整的十六进制和 ASCII 转储。例如,要查看文件描述符 3 和 5 上的所有输出活动,请使用 -e write=3,5。请注意,这与 write(2) 系统调用的正常跟踪无关,后者由选项 -e trace=write 控制。
但是我不明白 -ewrite 选项的作用。
debian - 已安装的 Debian 软件包列表 - 但有所不同
我有一个旧的 Debian 盒子,我在很长一段时间内大量使用它,它不再干净地启动,所以我拿出一张新的 Ubuntu Live CD 给它第二次生命的机会。我备份了所有文件,但现在我想查看我安装了哪些软件包。问题: dpkg 维护者似乎只希望一个人从所讨论的操作系统中执行此操作,而不是寄生的 Live CD。最终的结果是完全没有谷歌的结果如何做到这一点。
我将尝试在给定 --list 选项的情况下找出 dpkg 读取的文件,然后移植正确的文件,但我希望有一个比我计划做的更好的选择。
有任何想法吗?
java - strace'ing java 进程时有很多 SIGSEGV
当我在 CI 服务器(实际上是 Maven 构建)上调试其中一个单元测试时,发生了有趣的事情。我连接到 java 进程strace -ff -e trace=network -p [pid]
以跟踪构建过程的网络活动。这就是我所看到的:
所以,我们有一些网络活动(这是我真正要搜索的),还有很多SIGSEGV
信号。
构建正确完成(只是一个损坏的测试)。情况可确定并一遍又一遍地再现。这是什么意思?