在哪里可以找到所有系统调用和库调用?
我可以列出它们吗?
如何找出哪些最常出现?
答案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 命令...用于显示库和系统调用的计数。