Я знаю, что он использует ptrace
для реализации,
и он может получать аргументы в регистрах,
но это всего лишь цифры,
как strace преобразует их в буквальную информацию?
Это просто жесткий код для каждого системного вызова?
Я знаю, что он использует ptrace
для реализации,
и он может получать аргументы в регистрах,
но это всего лишь цифры,
как strace преобразует их в буквальную информацию?
Это просто жесткий код для каждого системного вызова?
В принципе, да, это жестко запрограммировано. Если вы посмотрите на исходный код (detail), вы можете увидеть большие таблицы системных вызовов и большие операторы switch, которые умеют декодировать все свои различные аргументы и возвращаемые значения для нескольких разных ОС и процессоров
read()
иwrite()
имеют одинаковые аргументы). - person Jonathan Leffler   schedule 23.09.2011