10.2.2. 跟踪所选库调用

要只跟踪一组所选库调用,请使用 -e 命令行选项运行 ltrace 工具:

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

使用规则链替换 expression,以指定要跟踪的库调用。规则可由标识符号名称的模式组成(如 mallocfree)和标识库 SONAME(如 libc.so)的模式。例如,要跟踪调用 mallocfree 功能,但要省略 libc 库所完成的那些功能:

$ scl enable devtoolset-11 'ltrace -e malloc+free-@libc.so* program'

例 10.2. 跟踪所选库调用

考虑 ls 命令。在此程序上运行 ltrace 程序,只跟踪 opendirreaddir、和 closedir 功能调用:

$ scl enable devtoolset-11 'ltrace -e opendir+readdir+closedir ls'
ls->opendir(".")     = { 3 }
ls->readdir({ 3 })   = { 61533, "." }
ls->readdir({ 3 })   = { 131, ".." }
ls->readdir({ 3 })   = { 67185100, "BUILDROOT" }
ls->readdir({ 3 })   = { 202390772, "SOURCES" }
ls->readdir({ 3 })   = { 60249, "SPECS" }
ls->readdir({ 3 })   = { 67130110, "BUILD" }
ls->readdir({ 3 })   = { 136599168, "RPMS" }
ls->readdir({ 3 })   = { 202383274, "SRPMS" }
ls->readdir({ 3 })   = nil
ls->closedir({ 3 })  = 0
BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
+++ exited (status 0) +++

有关可用过滤表达式的详细描述,请参阅 ltrace(1)手册页。