- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的代码如下:
#include <sys/ptrace.h>
#include <stdio.h>
int
main()
{
printf("PTRACE_CONT: %d\n", PTRACE_CONT);
printf("PTRACE_SYSCALL: %d\n", PTRACE_SYSCALL);
printf("PTRACE_SINGLESTEP: %d\n", PTRACE_SINGLESTEP);
printf("PTRACE_SYSEMU: %d\n", PTRACE_SYSEMU);
printf("PTRACE_SYSEMU_SINGLESTEP: %d\n", PTRACE_SYSEMU_SINGLESTEP);
printf("PTRACE_LISTEN: %d\n", PTRACE_LISTEN);
return 0;
}
我在 Ubuntu16.04(Linux x86_64 4.40-38)和 gcc v5.4.0 上使用默认标志进行编译。
这会引发一个错误,即 PTRACE_SYSEMU
未声明。而 man ptrace
页面 states it exists .如果包含 PTRACE_SYSEMU
的行被注释掉,则对 PTRACE_SYSEMU_SINGLESTEP
重复此操作。手册页指出 PTRACE_SYSEMU_SINGLESTEP
仅适用于 x86,except a patch was merged to unify the x86 and x64 2008 年处理 PTRACE_SYSEMU_SINGLESTEP
。
这会在 32 位(以及 i686)或 64 位(AMD64)上产生相同的错误。这个发行版是特定的吗?到底是怎么回事?
我可以确认这些值都没有在我的 /usr/include/x86_64/linux/sys/ptrace.h
中定义。但是它们是在内核源代码中定义的?!?
最佳答案
在 Ubuntu 16.04(以及 14.04)上,这些定义在 <asm/ptrace-abi.h>
中, 包含在 <asm/ptrace.h>
中,这又包含在 <linux/ptrace.h>
中, 但不是 <sys/ptrace.h>
由于这些请求代码是 linux 特定的(不是任何标准的一部分),如果您需要它们,您需要 #include <linux/ptrace.h>
关于c - PTRACE_SYSEMU 和 PTRACE_SYSEMU_SINGLESTEP 未在 x64 或 x86 上定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875461/
有没有人对 PTRACE_SYSEMU 的使用有任何好的解释、教程、书籍或指南? ? 最佳答案 我觉得有趣的地方: Example Implementation for ptrace Playing
我的代码如下: #include #include int main() { printf("PTRACE_CONT: %d\n", PTRACE_CONT); printf("P
我是一名优秀的程序员,十分优秀!