9.2.2. 跟踪所选系统调用

要只追踪所选系统调用集合,请使用 -e 命令行选项运行 strace 工具:

$ scl enable devtoolset-11 'strace -e expression program argument...'

使用以逗号分隔的系统调用列表替换 expression,用于跟踪或 表 9.1 “常用的 -e 选项的值” 中列出的任何关键字。有关所有可用值的详细描述,请查看 strace(1)手册页。

表 9.1. 常用的 -e 选项的值

描述

%file

接受文件名作为参数的系统调用。

%process

与进程管理相关的系统调用。

%network

与网络相关的系统调用。

%signal

与信号管理相关的系统调用。

%IPC

与进程间通信相关的系统调用(IPC)。

%desc

与文件描述符相关的系统调用。

请注意,语法 -e 表达式 是完整形式的简写格式 -e trace=表达式

例 9.2. 跟踪所选系统调用

考虑 例 11.1 “使用 memstomp” 中的 员工 文件。在此可执行文件上运行 strace 工具,仅跟踪 mmapmunmap 系统调用:

$ 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 +++