是否访问用户或内核空间
Does ptrace access user or kernel space?
我正在尝试通过以下C++代码读取 Aarch64 Linux 上进程/线程的进程/线程的指令指针/pc 寄存器,该进程/线程卡在系统调用中( = 内核土地):
ptrace( PTRACE_GETREGSET, threadProcessId, NULL, ®s );
printf( "Register dump: %lxn", regs.pc );
但是,打印出来的地址与/proc/threadProcessId/stack 返回的堆栈顶部的函数地址不同。它甚至似乎不在内核空间中。
我做错了什么吗?我可以通过这种方式访问内核部分电脑吗?
Ptrace 是从用户空间启动的,因此它只能访问 [用户进程] 的用户空间内存。内核空间由内核模块访问,可以插入我的insmod
.Ptrace 的内核空间类似物是 Ftrace。
相关文章:
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- CUDA内核和数学函数的显式命名空间
- pthread_spinlock是否会导致从用户空间切换到内核空间
- 为什么共享内存(在IPC中)不需要上下文切换?这是内核空间的内存,可以映射到用户空间
- 内核模块或用户空间应用程序
- Ubuntu,如何找到内核工作繁重的程序热点?似乎kernel.kallsyms上的函数没有标记为用户空间函数的子级
- 是否访问用户或内核空间
- 用户空间和内核空间进程中的信号处理程序集
- 内核模块定期调用用户空间程序
- std::线程在用户或内核空间中进行管理
- 设备内存空间中的 CUDA 程序内核代码
- ToUnicode是否调用ToUnicodeEx?ToUnicodeEx在内核空间线程上更改了什么
- 内核vs用户空间音频设备驱动程序在macOS
- 在32位linux内核上使用c++在堆上分配超过2GB的空间
- C++ Win32 API 将驱动程序加载到内核空间