是否有与Solaris实用程序的-T
and -U
选项truss
在Linux上等效的功能。
这些用于指定系统调用(-T
)或库函数(-U
),当被跟踪的应用程序调用该函数时,该函数将导致其停止。
或者,换句话说,我希望由跟踪的应用程序启动的任何进程在进行给定的系统调用或给定的共享库函数调用时立即停止(好像被SIGSTOP杀死)。
strace
并且ltrace
在Linux上提供了Solaris的许多功能集truss
,但他们似乎并没有这么做。
例如:
truss -f -T open cmd
会是这样strace -f cmd
,只是如果在执行过程中cmd
或任何其后代做任何open
系统调用时,它会立即停止(我可以在我方便以后恢复它)
在某些情况下,我可以使用gdb
的catch syscall
,但我一直在寻找一种解决方案,可以方便地遵循forks并继续对所有分叉的过程进行处理,即使在execve
s 之后也继续进行处理。
我似乎想起了一些提供相同功能的实用程序,甚至是在远程发生某些系统调用之间,甚至一步一步地向单步应用程序(或同一实用程序的选项),但我的记忆力却使我失望了,我什至无法确定在Linux上。
follow-exec-mode
)之后也可以跟进,我正在对此进行试验。不能严格回答问题,但可能足以满足我的需求。
truss
页的链接。