Как strace получает ошибку из-за сбоя системных вызовов в процессе, который она отслеживает?
Например, если я делаю strace ls
, strace отображает значение символа c errno (например, ENOENT
), когда вызов не удался. Я знаю, что Strace использует ptrace под капотом.
Если я использую ptrace для отслеживания системных вызовов процессов, как я могу прочитать значение errno в отслеживаемом процессе?
Более конкретно, как мне получить адрес errno в дочернем процессе, чтобы я мог прочитать его, используя PTRACE_PEEKDATA
или process_vm_readv
?
Спасибо