do_page_fault() #2: sending SIGSEGV to linux_stb for invalid read access from 00000000 (epc == 00000000, ra == 00000000) 因为缺少正确的$ra,linux gdb也无法显示调用栈。 可能的原因很多,比如该线程的内核栈被冲掉(可能性较少,因为内核栈应用层改不到)。 或者,该
很多时候,内核oops还是很好处理的,因为可以看到当时的函数调用栈。objdump -DS vmlinux,配合epc(程序指针)可以定位情况发生时的代码位置。有些调试器,支持断点地址设置,可以直接显示问题发生时的代码位置。 然而,当系统陷入某种死锁状态。又比如应用程序进行的系统调用不能退出等等。这种情况下,显示当前所有线程的当前函数调用栈就有很大的帮助作用了。 我们可以通过外部触发事件,比如
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号