跟踪系统调用

跟踪系统调用

我正在尝试学习使用“trace”(或 dtrace 或 strace 或 truss)的一些技巧,因此我使用以下命令:

trace -d [random PID]

我收到以下错误消息:

跟踪错误:跟踪工具故障,KERN_KDREMOVE:权限被拒绝

或者

无法打开代码描述文件 [PID]

我不确定这个标志,并且在其他操作系统中可能有所不同(我使用的是带有 Darwin 内核的 MacOS),但主要功能应该相同。

有人可以提供关于这个工具的简短教程吗?

答案1

你想要_____吗斯特拉斯已经运行的进程?至少在 Linux 上(具有 root 权限),您可以尝试以下操作来附加到 Bash shell 提示符进程。

# strace -p [PID of a process]
Process 2055 attached
read(0,

它就在那里等着。选择-p是附加到正在运行的进程的进程。使用选项-d, 你可以得到斯特拉斯显示其自身的调试信息。

参见 strace (1) 手册,

-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

相关内容