Linux内核调试方法总结之ptrace

时间:2021-11-20 03:48:22

ptrace

【用途】

进程跟踪器,类似于gdb watch的调试方法

【原理】【详细说明参考man ptrace帮助文档】

ptrace系统调用主要是父进程用来观察和控制子进程的执行过程、检查并替换子进程执行序列或者寄存器值的一种手段。主要用于实现断点调试和跟踪系统调用。

【接口说明】

#include <sys/ptrace.h>

long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);

序号

宏定义

说明

1

PTRACE_TRACEME

子进程通知内核该进程被父进程trace

2

PTRACE_PEEKTEXT

偷看子进程的代码段

3

PTRACE_PEEKDATA

偷看子进程的数据段

4

PTRACE_PEEKUSER

偷看子进程的用户数据

5

PTRACE_POKETEXT

篡改子进程的代码段

6

PTRACE_POKEDATA

篡改子进程的数据段

7

PTRACE_POKEUSER

篡改子进程的用户数据

8

PTRACE_GETREGS

读取子进程的寄存器值

9

PTRACE_GETFPREGS

读取子进程的浮点型寄存器值

10

PTRACE_GETSIGINFO

查看导致子进程中止执行的信号量的信息

11

PTRACE_SETREGS

设置子进程寄存器值

12

PTRACE_SETFPREGS

设置子进程浮点型寄存器值

13

PTRACE_SETSIGINFO

设置子进程响应的信号量

14

PTRACE_SETOPTIONS

设置跟踪选项

15

PTRACE_GETEVENTMSG

获取ptrace事件信息,并保存到父进程的数据段

16

PTRACE_CONT

父进程中调用,通知子进程继续执行

17

PTRACE_SYSCALL

 

18

PTRACE_SINGLESTEP

单步调试

19

PTRACE_SYSEMU

 

20

PTRACE_SYSEMU_SINGLESTEP

多步调试

21

PTRACE_KILL

删除子进程的跟踪器

22

PTRACE_ATTACH

附加跟踪器到子进程上

23

PTRACE_DETACH

移除子进程上的跟踪器