日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Linux高级调试与优化——ptrace

發布時間:2023/12/13 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 Linux高级调试与优化——ptrace 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ptrace (process trace)

#include <sys/ptrace.h>

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

ptrace系統調用運行tracer進程監視和控制tracee進程的執行過程,檢查和修改tracee進程的內存和寄存器值。ptrace主要用來實現端點調試和跟蹤系統調用。

tracee進程首先需要attach在tracer進程上,attach和接下來的命令是以線程為單位的,每一個tracee的線程都需要單獨attach到一個不同的tracer進程上,如果沒有attach到tracer上,則無法進行調試。

ptrace系統調用根據request分為不同的應用場景:

1) PTRACE_TRACEME
子線程中通過PTRACE_TRACEME請求父線程跟蹤自己,只有PTRACE_TRACEME請求ID是tracee調用的,其他請求ID都是tracer調用的。
ptrace(PTRACE_TRACEME, NULL, NULL, NULL);

2) PTRACE_PEEKTEXT,PTRACE_PEEKDATA
從tracee的內存addr處讀取一個雙字節數據。
Linux不區分代碼地址空間和數據地址空間,所以這兩個請求ID是一樣的。

3) PTRACE_PEEKUSER
從tracee的用戶區addr處讀取一個雙字節數據,通常包含寄存器值和進程相關的信息。(sys/user.h)

4) PTRACE_PORKTEXT,PTRACE_POKEDATA
將data雙字節數據寫入tracee內存的addr處

5) PTRACE_POKEUSER
拷貝一個雙字節數據data到tracee的用戶區addr處

6) PTRACE_GETREGS,PTRACE_GETFPREGS
拷貝tracee的通用寄存器值或者浮點寄存器值到tracer的data處。不是所有的CPU架構都支持該請求

7) PTRACE_GETREGSET
讀取tracee的寄存器

8) PTRACE_SETREGS,PTRACE_SETFPREGS
修改tracee的通用寄存器或者浮點寄存器

9) PTRACE_SETREGSET
修改tracee的寄存器

10) PTRACE_GETSIGINFO
獲取導致tracee停止執行的信號量。通過data返回siginfo_t結構體

11) PTRACE_SETSIGINFO
設置信號量,這樣正常發給tracee的信號量會首先被tracer捕獲

12) PTRACE_PEEKSIGINFO
只讀tracee的siginfo_t結構體

13) PTRACE_GETSIGMASK
獲取tracee屏蔽的信號量

14) PTRACE_SETSIGMASK
設置tracee信號量屏蔽屬性

15) PTRACE_SETOPTIONS

16) PTRACE_GETEVENTMSG
獲取ptrace消息事件

17) PTRACE_CONT
重新運行停止運行的tracee線程

18) PTRACE_SYSCALL,PTRACE_SIGLESTEP
單步調試tracee

19) PTRACE_SYSEMU,PTRACE_SYSEMU_SIGLESTEP

20) PTRACE_LISTEN
重啟停止的tracee,但是不執行它

21) PTRACE_KILL
給tracee發送SIGKILL終止它運行

22) PTRACE_INTERRUPT
停止tracee運行

23) PTRACE_ATTACH
附著在pid進程上,讓他成為調用者的tracee

24) PTRACE_SZIZE
與PTRACE_ATTACH不同的是,該請求不會停止tracee的執行

25) PTRACE_DETACH
取消附著,恢復tracee執行

總結

以上是生活随笔為你收集整理的Linux高级调试与优化——ptrace的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。