如何列出 Unix 中的系统调用和库调用?

如何列出 Unix 中的系统调用和库调用?

在哪里可以找到所有系统调用和库调用?

我可以列出它们吗?

如何找出哪些最常出现?

答案1

我认为您想要从特定程序而不是全部程序进行的系统/库调用。

strace显示来自可执行程序的所有外部调用。如果程序有图形用户界面,那么将会有数千个 - 使得在“屏幕上”分析它们变得困难。

要保存所有调用,您可以将strace的输出重定向到文件:

strace your_executable 2> my_log_file

退出程序时将关闭。然后,您可以在任何文本查看器/编辑器中查看/搜索该文件。更多信息可从man strace或来自例如。linux.die.net/man/1/strace本页展示了一些有趣的使用方法strace

为了完整性:斯蒂芬·哈里斯建议如下:

FWIW, strace -o log_file -f your_executable 可能会更好; -o 标志导致 strace 向那里发送输出,而 -ff 表示如果程序调用 fork() ,那么也会跟随该子进程。根据应用程序 -ff 可能会更好,因此每个子进程数据都位于其自己的日志文件中。 strace 显示系统调用; ltrace 可以显示库调用。

甚至更多来自马克·普洛特尼克:

是的,ltrace -c -S 命令...用于显示库和系统调用的计数。

相关内容