问题标签 [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.
io-redirection - strace tmux 输出重定向到文件
我想检查 tmux 在启动时会触及哪些文件(而不仅仅是 tmux 运行时打开的文件列表)。Strace tmux 似乎是最好的选择。
尝试将输出重定向到文件时strace tmux > /tmp/blah
。文件为空。
为什么会这样?如何将跟踪重定向到文件?
c - 两个同时发送锁定两个程序
我正在调试我的应用程序(有点像之前的问题的后续),它本质上是一个玩具点对点客户端。它的工作原理如下:
- 对等点 1 从对等点 2 请求一个块(或多个块)
- 对等点 2 收到请求,并将块发回
并且循环或多或少地重复。这对于较小的文件非常有用,但是对于任何必须分成大量块(比如 250 个 512 字节的块)的文件,它都会死掉。
在 Peer 2(接收请求的那个)上运行 strace 如下所示:
Peer 1(发送请求的那个)上的 strace 结果如下所示:
发送时都死了。我不完全确定为什么。如果有人能对此有所了解,我将不胜感激!
linux - 轮询系统调用超时
附件strace
显示了很多这样的消息:
如何找到程序试图访问导致poll
系统调用超时的文件?
strace
生成大量消息,使其难以调试
macos - 使用命令行工具确定是什么阻止了 OSX 上的进程?
标题说得最多,真的。在 Linux 上,使用or可能很容易,并且在从 OSX Leopard 中删除之前,它曾经在 OSX 上很容易,以及底层系统调用(afaik)。strace
lsof
/proc
truss
显而易见的方法是用 来解决这个问题dtrace
,但据我所知dtrace
,它不会这样做,因为它会在事件发生时捕获它们 - 在我的情况下,阻塞系统调用已经开始。顺便说一句,如果这可以解决,我很乐意纠正dtrace
。
我看到 Xcode 的 Instruments 有一个监视器,它通过定期对进程堆栈进行采样来实现类似的功能(不确定它依赖于什么系统调用来做到这一点!),也许命令行上的类似功能就足够了(因为它会显示堆栈一直到包装系统调用的库调用)。为了对我的用例有用,这个“采样命令行工具”必须找到并解析它在堆栈上找到的参数,以便确定我们阻止了哪个文件/文件描述符。
最后一件事 - 在 Linux 上,您通常可以作为普通用户执行此操作(假设没有ptrace_scope
技巧)。如果 OSX 解决方案也不需要 root,那就太好了。
c - 了解进程的执行环境
我如何知道两个不同上下文中进程的“执行环境”的区别?
为了正确表达这个问题,我安装了plan9port /opt/plan9/
,当我从中运行财富程序时,/opt/plan9/bin/fortune
它工作正常。/opt/plan9/lib/fortune
(从和读取财富列表/opt/plan9/lib/fortune.index
)。当我从 ac 代码 (test.c) 内部调用它时
它不读取财富清单。当我调用这两个二进制文件时,我使用 strace 来查看有什么区别。
strace -f -eopen ./test
发出默认消息“不幸”。
strace -f -eopen fortune
效果很好。
如何更改 ./test 读取财富文件。它必须与 exec 环境有关,二进制文件从中读取库。
python - strace 输出处理
我以这种方式使用 strace:
然后我用 sed 得到清晰的文件列表:
有一个输出示例:
我的问题是非全名条目(例如“util.c”或“./util_cfgtree.h”)。有没有办法在 strace 输出中获取全名?
我写了这个脚本:
但是我对Python的了解很差。
有没有错误或不好的解决方案?
android - 用于 strace 的 Android 应用
我正在使用 Android 平板电脑,并希望调试导致随机重启的应用程序。
有没有可以安装的应用程序来执行等效的背景strace
或等效操作?这个一般是怎么处理的。
我正在查看是否有一个应用程序不断运行,记录系统事件。
感谢您的关注。
linux - 为什么 NSS 模块在 Linux 上必须以 .so.2 结尾?
我已经为 Red Hat Linux 构建了一个名称服务切换模块。
使用 strace,我确定操作系统在各种目录中查找库,但仅查找具有扩展名的文件.so.2
(例如libnss_xxx.so.2
,xxx
服务名称在哪里)
为什么它不寻找.so
或.so.1
图书馆?是否有任何保证它不会停止寻找图书馆并在未来.so.2
开始寻找图书馆?.so.3
编辑:http ://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html说这2
是“每当界面更改时都会增加的版本号”。所以我猜:
- NSS 的版本需要库的版本 2。
- 具有更新 NSS 的操作系统更新可能需要不同的版本号。
有人可以确认这是否属实吗?
qt - Environment for a Qt Program
I have a Qt executable file. When this program runs on a Ubuntu 11.04 virtual machine, the GUI is ugly though you can still tell it is the GUI that you want. When it runs on Ubuntu 12.04 of my laptop, however, everything goes well. Thus I guess there might be something wrong with the environment of the virtual machine.
To find out whether the problem lies in the libraries, I ran the command
I got library dependencies as following:
Then I am wondering how can they be different? Can I find out what is wrong by tools such as strace?
hook - LD_PRELOAD 和 strace 有什么区别?
这两种方法都用于收集系统调用以及参数和它们的返回值。我们什么时候喜欢LD_PRELOAD
,为什么?也许我们可以说我们只能通过收集系统调用,但我们可以通过技巧strace
收集库调用。LD_PRELOAD
但是,对于名称为ltrace
.