2016-09-21 82 views
0

我正在使用GDB硬件調試器來調試Linux內核驅動程序。有時候,有一個頁面錯誤異常。
我使用GDB連接到處理器並嘗試回溯。 GDB打印功能只針對缺頁異常和之後的函數調用,然後打印:Linux內核頁面故障棧回溯

回溯停止:框架沒有保存PC

如何我之前回溯的堆棧功能例外?

+0

根據我的經驗,當你* AREN運行gdb,內核通常會打印一個堆棧回溯,以響應(n意外的)內核頁面錯誤。我的猜測是,gdb不能成功導航到堆棧上的異常幀 - 這與普通的函數調用堆棧幀完全不同。你是否試過在沒有調試器的情況下運行? –

回答

0

我想說....大部分時間我碰到頁面錯誤+遞歸內核堆棧跟蹤,最有可能的堆棧溢出問題。

我從irq_exit()中發現,它試圖獲取curret_task_id,並且由於堆棧溢出而導致任務結構被破壞。因此,反傾銷初始崩潰轉儲,但回溯()也依賴於當前的任務結構,並保持打page_fault或某種非意識回溯的.....

啓用動態