我有一臺運行在VMWare上的linux,並且在主機上使用gdb在調試時連接到它。運行時,我的內核會導致一些進程掛起,我想調查更多。在內核調試中訪問進程的內核堆棧給定進程ID
內核給我的是掛起進程的進程ID以及堆棧跟蹤。但是,如果沒有傳遞參數,堆棧跟蹤並不是非常有用。所以我想收集更多信息。所以我有兩個問題:
鑑於pid,我怎樣才能得到task_struct對應的過程?我試圖在gdb下執行「p find_task_by_pid_ns(2533,& init_pid_ns)」,但它掛起。
一旦我得到了task_struct和堆棧指針。我的最終目標是重現堆棧跟蹤(每個函數調用的參數)。有沒有一種工具可以做到這一點? gdb是否需要一個堆棧指針併爲我打印堆棧跟蹤?
謝謝。
但您只需要您的進程(用戶空間)堆棧。或者你正在調試一個內核模塊,或者只是你的應用程序? – 2012-03-02 06:11:49
我需要內核堆棧,因爲我正在調試內核 – yangsuli 2012-03-02 06:13:45