7

我需要找出二进制文件是否正在使用epollselect用于 Linux 上的套接字处理。二进制文件没有被剥离,但我不能在我的 linux 机器上运行它,所以没有strace

4

1 回答 1

10

nm <binary>会告诉你定义了哪些符号,更重要的是,给定的二进制文件使用了哪些符号。您可以通过检查输出中列出的poll或来得到保守的猜测。select

您可能会发现您的应用程序与两者相关联。在这种情况下,它可能会在运行时决定调用哪一个,并且如果您运行它,您将无法轻松判断它将实际使用哪个。

根据二进制文件的构建方式,您可能必须nm使用-D标志运行;或者您可能需要确保不指定-D. 尝试两种方式。

如果程序使用共享库,则实际调用pollselect可能在它正在使用的库中。在这种情况下,您可能必须深入研究nm在每个库上运行的所有库。您可以通过ldd查找NEEDED.readelf --dynamic

如果二进制文件是为与您当前运行的平台不同的平台构建的,那么ldd将无法工作,并且您可能必须使用交叉编译器构建binutils来获得nm适合您的版本。

于 2012-11-08T00:41:36.067 回答