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 |
移除子進程上的跟蹤器 |