Есть ли эквивалент того, что делает -Tи -Uвариант trussутилиты Solaris в Linux.
Они должны указывать системный вызов ( -T) или библиотечную функцию ( -U), которая при вызове отслеживаемым приложением приведет к его остановке.
Или, в противном случае, я бы хотел, чтобы любой процесс, запущенный отслеживаемым приложением, был остановлен (как если бы он был уничтожен SIGSTOP), как только он выполняет заданный системный вызов или заданный вызов функции совместно используемой библиотеки.
straceи ltraceв Linux предоставляют большую часть возможностей Solaris truss, но, похоже, они этого не делают.
Например:
truss -f -T open cmd
Было бы похоже, strace -f cmdза исключением того, что если выполняющийся процесс cmdили какой-либо из его потомков выполняет какой-либо openсистемный вызов, он будет немедленно остановлен (и я могу возобновить его позже, когда мне будет удобно)
В некоторых случаях я мог использовать gdbs catch syscall, но я искал решение, которое могло бы удобно следовать за вилками и продолжать делать это для всех разветвленных процессов и продолжать делать это даже после execves.
Кажется, я вспоминаю какую-то утилиту, предоставляющую такую же функциональность, даже одну (или опции для той же утилиты), для одношаговых приложений между некоторыми вхождениями некоторого системного вызова, как это удаленно, но моя память подводит меня, я даже не могу быть уверен, это было в Linux.
follow-exec-mode), я экспериментирую с этим. Строго не отвечает на вопрос, но может быть достаточно для того, что мне нужно.
truss.