识别导致strace挂起的文件

Gre*_*reg 4 memory gtk strace ubuntu-10.04

我有一个在Ubuntu 10.04上运行的GTK程序挂起可中断状态,我想了解输出strace.特别是,我有这条线:

read(5, 0x2ba9ac4, 4096) = -1 EAGAIN (Resource temporarily unavailable)
Run Code Online (Sandbox Code Playgroud)

我怀疑5是文件描述符,0x2ba9ac4要读取的文件中的地址以及要读取4096的数据量.你确定吗?更重要的是,如何确定程序尝试读取哪个文件?此文件描述符不存在/proc/pid/fd(这可能是程序挂起的原因).

lib*_*rce 8

您可以通过调用找到使用此文件描述符的文件strace -o log -eopen,read yourprogram.然后在log文件中搜索read感兴趣的调用.从该行(而不是文件的第一行),向上搜索此文件描述符的第一个匹配项(通过调用返回open).

例如,返回的文件描述符open是3:

open("/etc/ld.so.cache", O_RDONLY)      = 3
Run Code Online (Sandbox Code Playgroud)

  • 如果它是第一个`open`,这个文件描述符位于错误的`read`之上,那么是,该文件就是那个.只有在调用了"close"时才能重用文件描述符.如果你想确定,请使用`-eopen,read,close`.文件描述符唯一地与对应的"open"和"close"之间的文件相关联. (2认同)