"strace - это трассировщик системных вызовов, то есть инструмент отладки, который распечатывает трассировку всех системных вызовов, выполненных другим процессом / программой."Что, если системные вызовы работают рекурсивно или один системный вызов вызывает другой системный вызов.Как я могу получить эту информацию?
Возможное решение - Мы можем создать простой переменный отступ, который мы увеличиваем при вводе системного вызова и уменьшаем при выходе.Теперь просто напечатайте «отступ» количество пробелов перед каждым вызовом.Таким образом, мы можем получить что-то вроде этого -
05:31:09.449402 getpriority(PRIO_PROCESS, 0) = 20
05:31:09.450514 ioctl(7, 0xc0186201, 0xbef86ac0) = 0
05:31:09.451817 ioctl(7, 0xc0186201, 0xbef86c10) = 0
05:31:09.524328 writev(4, [{"\4", 1}, {"ServiceManager\0", 15}, {"ServiceManager: addService(SMS, 0x15988)\n\0", 42}], 3) = 58
05:31:09.526862 futex(0x134ac, FUTEX_WAKE, 2147483647) = 0
05:31:09.527847 getpriority(PRIO_PROCESS, 0) = 20
05:31:09.528758 ioctl(7, 0xc0186201, 0xbef86ac0) = 0
05:31:09.529847 ioctl(7, 0xc0186201, 0xbef86c10) = 0
Имеет ли Strace или какой-либо другой инструмент эту функцию, или мне нужно изменить исходный код для достижения этой цели?