【发布时间】:2019-10-02 15:53:31
【问题描述】:
试图在arm linux中获取线程的PC寄存器。
有进程,进程 id = 120,它有 3 个线程:线程 id:121,122,123。
#include <sys/ptrace.h>
#include <sys/user.h>
int main()
{
struct user_regs_struct regs;
ptrace (PTRACE_ATTACH,123,0,0);
ptrace (PTRACE_GETREGS,123,NULL,®s);
printf ("0x%x",regs.pc);
}
在gcc-arm编译器中编译时,报错error: storage size of 'regs' isn't known struct user_regs_struct regs
为什么这个结构未知?如何使用 ptrace 获取线程的寄存器值?
【问题讨论】:
-
看elixir.bootlin.com/linux/latest/source/arch/arm/include/uapi/…,看来你应该使用
struct pt_regs。
标签: c linux arm cpu-registers ptrace