strace gdb與ptrace
具體**見patents
理解 ptrace()函式
所有的系統呼叫陷入核心的方式都是一樣的,所以僅僅是陷入核心空間是不夠的。因此必須把系統呼叫號一併傳給核心。在x86上,這個傳遞動作是通過在觸發軟中
斷前把呼叫號裝入eax暫存器實現的。這樣系統呼叫處理程式一旦執行,就可以從eax中得到資料。上述所說的system_call()通過將給定的系統呼叫號與nr_syscalls做比
較來檢查其有效性。如果它大於或者等於nr_syscalls,該函式就返回-enosys.否則,就執行相應的系統呼叫:call *sys_call_table(, %eax, 4);
由於系統呼叫表中的表項是以32位(4位元組)型別存放的,所以核心需要將給定的系統呼叫號乘以4,然後用所得到的結果在該表中查詢器位置。如圖圖一所示:
上面已經提到,除了系統呼叫號以外,還需要一些外部的引數輸入。最簡單的辦法就是像傳遞系統呼叫號一樣把這些引數也存放在暫存器裡。在x86系統上ebx,ecx,
edx,esi和edi按照順序存放前5個引數。需要六個或六個以上引數的情況不多見,此時,應該用乙個單獨的暫存器存放指向所有這些引數在使用者空間位址的指標。給使用者空間的返回值也通過暫存器傳遞。在x86系統上,它存放在eax暫存器中。
ptrace 跟蹤多執行緒程式:
gdb的原理 ptrace系統呼叫
首先,linux的程序狀態大體分為以下幾種 以上內容來自ps命令的manual手冊 d task uninterruptible 不可中斷的睡眠狀態。r task running 程序執行中。s task interruptible 可中斷的睡眠狀態。t task stopped 暫停狀態。t ta...
一款比top強悍好用的程序管理監控工具
ps 近來發現了乙個與top類似,但比top好用強大的程序管理監控工具,就是htop,跟大家分享一下!超好用,運維必備!top 乙個可以讓使用者與之互動的程序檢視器。作為文字模式的應用程式,主要用於控制台或x終端中。當前具有按樹狀方式來檢視程序,支援顏色主題,可以定製等特性。與top相比,htop有...
系統呼叫Open 函式的核心追蹤 上篇
from open函式相信大家都用過,這裡就不多說它的使用方法等事項,現直接進入正題.使用者態程式呼叫open函式時,會產生乙個中斷號為5的中斷請求,其值以該巨集 nr open進行標示.而後該程序上下文 processcontext 將會被切換到核心空間。待核心中的相關操作完成後,就會從核心返回,...