2011-03-11 427 views
2

我想使用gdb查看fork()系統調用的各種細節。爲此,我在fork()處使用了一個斷點,然後從那裏開始使用step命令,但這種方式工作不正常。使用gdb進行fork()系統調用

有人可以解釋我如何使用gdb來查看fork()系統調用期間發生的每一個步驟嗎?

+0

您是否試圖單步進入內核? – Gabe

回答

0

如果你想看看發生了什麼事情,最好先看看內核代碼,check it here

我不認爲你可以單步通過內核從用戶空間。您可以使用虛擬服務器使用KGDB進行調試。檢查blog post here。或者你可以在主內核上使用KGDB

+0

當然,你不能從用戶空間穿過內核空間,這是內核空間和用戶空間分離的全部要點。 – littleadv

2

也許你的意思是說,一旦fork被調用,你想要遵循子進程而不是父進程?在這種情況下:

如果你想跟着孩子 進程而不是父進程, 使用命令集遵循叉模式。

集後續叉模式模式

設置調試器響應於叉或的vfork的程序調用。撥號或vfork呼叫 會創建一個新的 進程。模式參數可以是:

:原始進程在分叉後被調試。孩子 過程運行暢通無阻。這是默認的 。

:新進程在fork後被調試。父進程不受阻礙地運行 。