Как strace интерпретирует аргументы системного вызова?

Я знаю, что он использует ptrace для реализации,

и он может получать аргументы в регистрах,

но это всего лишь цифры,

как strace преобразует их в буквальную информацию?

Это просто жесткий код для каждого системного вызова?


person x86    schedule 23.09.2011    source источник
comment
Вероятно, или, возможно, таблица поиска для разных наборов аргументов (поскольку read() и write() имеют одинаковые аргументы).   -  person Jonathan Leffler    schedule 23.09.2011
comment
read() и write() не имеют одинаковых аргументов - он не печатает значение буфера read() до тех пор, пока не вернется.   -  person Random832    schedule 23.09.2011


Ответы (1)


В принципе, да, это жестко запрограммировано. Если вы посмотрите на исходный код (detail), вы можете увидеть большие таблицы системных вызовов и большие операторы switch, которые умеют декодировать все свои различные аргументы и возвращаемые значения для нескольких разных ОС и процессоров

person Chris Dodd    schedule 23.09.2011
comment
Э-э, может быть, я слепой, но вы можете указать, например. таблица аргументов системного вызова для открытого системного вызова? Спасибо! - person mart1n; 28.03.2013