是否有与Solaris 实用程序的-T
和-U
选项truss
在 Linux 上执行的等效项。
这些是指定一个系统调用 ( -T
) 或库函数 ( -U
),当被跟踪应用程序调用时会导致它停止。
或者,换句话说,我希望被跟踪的应用程序启动的任何进程在执行给定的系统调用或给定的共享库函数调用后立即停止(就像被 SIGSTOP 杀死一样)。
strace
并且ltrace
在 Linux 上提供了 Solaris 的许多功能集truss
,但他们似乎没有这样做。
例如:
truss -f -T open cmd
Run Code Online (Sandbox Code Playgroud)
会是这样strace -f cmd
,只是如果在执行过程中cmd
或任何其后代做任何open
系统调用时,它会立即停止(我可以在我方便以后恢复它)
在某些情况下,我可以使用gdb
's catch syscall
,但我正在寻找一种可以方便地跟踪分叉并继续为所有分叉进程执行此操作的解决方案,即使在execve
s之后也继续执行此操作。
我似乎记得一些实用程序提供了相同的功能,甚至是一个(或同一实用程序的选项)在某些远程系统调用之间的单步应用程序,但我的记忆力让我失望,我什至无法确定那是在 Linux 上。