2016-09-21 114 views
0

我正在使用GDB硬件调试器来调试Linux内核驱动程序。有时候,有一个页面错误异常。
我使用GDB连接到处理器并尝试回溯。 GDB打印功能只针对缺页异常和之后的函数调用,然后打印:Linux内核页面故障栈回溯

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

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

+0

根据我的经验,当你* AREN运行gdb,内核通常会打印一个堆栈回溯,以响应(n意外的)内核页面错误。我的猜测是,gdb不能成功导航到堆栈上的异常帧 - 这与普通的函数调用堆栈帧完全不同。你是否试过在没有调试器的情况下运行? –

回答

0

我想说....大部分时间我碰到页面错误+递归内核堆栈跟踪,最有可能的堆栈溢出问题。

我从irq_exit()中发现,它试图获取curret_task_id,并且由于堆栈溢出而导致任务结构被破坏。因此,反倾销初始崩溃转储,但回溯()也依赖于当前的任务结构,并保持打page_fault或某种非意识回溯的.....

启用动态