Отслеживание системных вызовов
Я пытаюсь научиться некоторым трюкам, используя "trace" (или dtrace, или strace, или truss), поэтому я использую команду:
trace -d [random PID]
Я получаю следующие сообщения об ошибках:
ошибка трассировки: ошибка средства трассировки, KERN_KDREMOVE: в доступе отказано
или же
Не удалось открыть файл описания кода [PID]
Я не уверен насчет флага и, вероятно, отличается в других ОС (я использую MacOS с ядром Darwin), но основные функции должны быть такими же.
Может ли кто-нибудь предоставить краткое руководство по этому инструменту?
1 ответ
Вы хотите связать уже запущенный процесс? По крайней мере в Linux (с правами root) вы можете попробовать следующее, чтобы присоединиться к процессу приглашения оболочки Bash.
# strace -p [PID of a process]
Process 2055 attached
read(0,
И это ждет там. Опция -p - это та, которая присоединяется к запущенному процессу. С опцией -d вы можете заставить strace отображать отладочную информацию от себя.
Смотрите руководство по strace (1),
msgstr " -d Показать некоторые отладочные данные самого strace для стандартной ошибки. "
Без разрешения root вы получите похожие ошибки, такие как в Ubuntu 13.10:
$ strace -p [random PID]
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf