9.2.2. 跟踪所选系统调用
要只追踪所选系统调用集合,请使用 -e
命令行选项运行 strace
工具:
$ scl enable devtoolset-11 'strace -e expression program argument...'
使用以逗号分隔的系统调用列表替换 expression,用于跟踪或 表 9.1 “常用的 -e 选项的值” 中列出的任何关键字。有关所有可用值的详细描述,请查看 strace(1)手册页。
值 | 描述 |
---|---|
| 接受文件名作为参数的系统调用。 |
| 与进程管理相关的系统调用。 |
| 与网络相关的系统调用。 |
| 与信号管理相关的系统调用。 |
| 与进程间通信相关的系统调用(IPC)。 |
| 与文件描述符相关的系统调用。 |
请注意,语法 -e 表达式
是完整形式的简写格式 -e trace=表达式
。
例 9.2. 跟踪所选系统调用
考虑 例 11.1 “使用 memstomp” 中的 员工
文件。在此可执行文件上运行 strace
工具,仅跟踪 mmap
和 munmap
系统调用:
$ scl enable devtoolset-11 'strace -e mmap,munmap ./employee'
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f896c744000
mmap(NULL, 61239, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f896c735000
mmap(0x3146a00000, 3745960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3146a00000
mmap(0x3146d89000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x189000) = 0x3146d89000
mmap(0x3146d8e000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3146d8e000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f896c734000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f896c733000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f896c732000
munmap(0x7f896c735000, 61239) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f896c743000
John,john@example.comDoe,
+++ exited with 0 +++