我需要找出二进制文件是否正在使用epoll
或select
用于 Linux 上的套接字处理。二进制文件没有被剥离,但我不能在我的 linux 机器上运行它,所以没有strace
。
问问题
4952 次
1 回答
10
nm <binary>
会告诉你定义了哪些符号,更重要的是,给定的二进制文件使用了哪些符号。您可以通过检查输出中列出的poll
或来得到保守的猜测。select
您可能会发现您的应用程序与两者相关联。在这种情况下,它可能会在运行时决定调用哪一个,并且如果您运行它,您将无法轻松判断它将实际使用哪个。
根据二进制文件的构建方式,您可能必须nm
使用-D
标志运行;或者您可能需要确保不指定-D
. 尝试两种方式。
如果程序使用共享库,则实际调用poll
或select
可能在它正在使用的库中。在这种情况下,您可能必须深入研究nm
在每个库上运行的所有库。您可以通过ldd
查找NEEDED
.readelf --dynamic
如果二进制文件是为与您当前运行的平台不同的平台构建的,那么ldd
将无法工作,并且您可能必须使用交叉编译器构建binutils
来获得nm
适合您的版本。
于 2012-11-08T00:41:36.067 回答