我正在尝试读取通过此C ++代码卡在系统调用(= kernel land)中的Aarch64 Linux臂上的进程/线程的指令指针/ pc寄存器:
ptrace( PTRACE_GETREGSET, threadProcessId, NULL, ®s );
printf( "Register dump: %lx\n", regs.pc );
但是,打印出的地址与/ proc / threadProcessId / stack返回的堆栈顶部的函数地址不同。它甚至似乎不在内核空间中。
我做错什么了吗?我可以这样访问内核部件吗?
答案 0 :(得分:0)
Ptrace 从用户空间启动,因此它只能访问用户空间内存[用户进程]。内核空间由内核模块访问,可以插入我的insmod
。 Ptrace 的内核空间类似物是 Ftrace。