繁体   English   中英

ptrace 访问用户空间还是内核空间?

[英]Does ptrace access user or kernel space?

我正在尝试通过以下 C++ 代码读取卡在系统调用(= kernel land)中的 arm Aarch64 linux 上的进程/线程的指令指针/pc 寄存器:

ptrace( PTRACE_GETREGSET, threadProcessId, NULL, &regs );
printf( "Register dump: %lx\n", regs.pc );

但是打印出来的地址和/proc/threadProcessId/stack返回的栈顶的函数地址不一样。 它甚至似乎不在内核空间中。

难道我做错了什么? 我可以通过这种方式访问​​内核部分 pcs 吗?

ptrace 是从用户空间启动的,因此它只能访问[用户进程的] 用户空间内存。 内核空间由内核模块访问,可以插入我的insmod Ptrace 的内核空间类似物是Ftrace

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM