10.2.2. 跟踪所选库调用
要只跟踪一组所选库调用,请使用 -e
命令行选项运行 ltrace
工具:
$ scl enable devtoolset-11 'ltrace -e expression program argument...'
使用规则链替换 expression,以指定要跟踪的库调用。规则可由标识符号名称的模式组成(如 malloc
或 free
)和标识库 SONAME(如 libc.so
)的模式。例如,要跟踪调用 malloc
和 free
功能,但要省略 libc
库所完成的那些功能:
$ scl enable devtoolset-11 'ltrace -e malloc+free-@libc.so* program'
例 10.2. 跟踪所选库调用
考虑 ls
命令。在此程序上运行 ltrace
程序,只跟踪 opendir
、readdir
、和 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)手册页。