我有一个碰撞方法的objdump。我发现崩溃是由于内存访问不正确。存储器地址存在于MIPS寄存器a0中。有没有一种方法可以跟踪注册器如何获得这个地址,而不是逐步回溯(漫游)objdump(a0从s3等得到它)。注册表值调试
我还有一个问题。
在内核中如何进行分页。内核中的虚拟地址一定没有概念,因为它们都已经在内存中。我在崩溃后得到的这个问题有一个叫做BADVA的东西(它是不是虚拟地址),它包含一个不好的地址。
这里是崩溃报告
Cpu 0
Registries dump
Status: 10000302 KERNEL EXL
**Cause : 00803c08 TLBL**
**BadVA : fdca9b68**
PrId : 01019378
你的意思是在拆卸意义上的“objdump”?一般来说,正确的工具是像gdb这样的调试器。除非崩溃代码是用汇编语言编写的,否则应该查看C源代码级别而不是原始寄存器。这就是调试器的用途。 –
是的。它是一个拆卸。这是一次性崩溃,再也没有发生过。 我需要检查地址是否从用户空间传递。 –
好的,我错过了这是在内核中。这使得使用调试器变得非常困难,但仍然不是不可能的(谷歌'kgdb')。但是你应该在你的内核日志中有一个OOPS报告来帮助你进行分析 - 一般来说,查看堆栈跟踪和破坏发生的原因要比单独从一个坏地址开始并且通过工作更容易拆卸。 –