在arm-linux中使用ptrace获取寄存器

时间:2019-05-15 13:20:41

标签: c linux arm cpu-registers ptrace

试图在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,&regs);
    printf ("0x%x",regs.pc);
}

在gcc-arm编译器中编译时,出现错误error: storage size of 'regs' isn't known struct user_regs_struct regs

为什么这个结构未知?如何使用ptrace获取线程的寄存器值?

1 个答案:

答案 0 :(得分:1)

检查您的sys/user.h,如man页面上所述。

您可能会以其他名称找到它,例如struct user_regs