Linux內核調試方法總結之ptrace


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

移除子進程上的跟蹤器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM