Чи є еквівалент тому, що робить -T
і -U
опція truss
утиліти Solaris в Linux.
Вони повинні вказати системний виклик ( -T
) або функцію бібліотеки ( -U
), яка при виклику відстеженої програми спричинить його зупинку.
Або, якщо говорити інакше, я хочу, щоб будь-який процес, розпочатий відстежуваною програмою, був зупинений (як би вбитий SIGSTOP), як тільки він робить заданий системний дзвінок або заданий виклик функції спільної бібліотеки.
strace
а ltrace
в Linux надають велику частину наборів функцій Solaris truss
, але вони, схоже, не роблять цього.
Наприклад:
truss -f -T open cmd
Хотілося б strace -f cmd
за винятком того, що якщо процес, який виконує cmd
або хтось із його нащадків, викликає будь-яку open
систему, він буде негайно зупинений (і я можу відновити його пізніше за моїм зручністю)
У деяких випадках я міг би скористатися gdb
функцією 's catch syscall
, але я шукав рішення, яке зручно слідкувати за вилами та продовжувати робити це для всіх роздрібнених процесів і продовжувати робити це навіть після execve
s.
Здається, я згадую якусь утиліту, яка дає однакові функціональні можливості, навіть одну (або параметри тієї самої утиліти) одношаговим програмам між деякими появами деякого syscall віддалено, як це, але пам'ять мені не вдається, я навіть не можу бути впевнений що було в Linux.
follow-exec-mode
), я експериментую з цим. Це не відповідає строго на питання, але може бути досить гарним для того, що мені потрібно.
truss
.