gpt4 book ai didi

c - Linux内核中的ptrace在哪里?

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:35 27 4
gpt4 key购买 nike

我无法在内核源代码中使用 global ptrace 找到它,kernel/ptrace.c 中没有定义,就像手册页中所述......我可以看到 kernel/ptrace.c 和 include/linux/ptrace.h 但什么都没有

最佳答案

你需要在你的libc源代码中寻找它,例如 glibc或者 musl .并注意它在NOTES 部分下的 man ptrace:

Although arguments to ptrace() are interpreted according to the prototype given, glibc currently declares ptrace() as a variadic function with only the request argument fixed. It is recommended to always supply four arguments, even if the requested operation does not use them, setting unused/ignored arguments to 0L or (void *) 0.

例如在 glibc 中定义了 ptrace()sysdeps/unix/sysv/linux/ptrace.c:

long int
ptrace (enum __ptrace_request request, ...)
{
long int res, ret;
va_list ap;
pid_t pid;
void *addr, *data;

va_start (ap, request);
pid = va_arg (ap, pid_t);
addr = va_arg (ap, void *);
data = va_arg (ap, void *);
va_end (ap);

if (request > 0 && request < 4)
data = &ret;

res = INLINE_SYSCALL (ptrace, 4, request, pid, addr, data);
if (res >= 0 && request > 0 && request < 4)
{
__set_errno (0);
return ret;
}

return res;
}

关于c - Linux内核中的ptrace在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58083007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com