嵌入式系统调试与性能分析指南
1. 调试问题定位与解决
在调试过程中,有时会遇到 Oops 错误。例如,发现 m 变量是一个空指针,这正是导致 Oops 的原因。查看 m 初始化的代码,发现缺少一行。修改驱动以初始化指针后,问题解决,不再出现 Oops 。以下是修改后的代码:
static int mbx_open(struct inode *inode, struct file *file)
{
if (MINOR(inode->i_rdev) >= NUM_MAILBOXES) {
printk("Invalid mbx minor number\n");
return -ENODEV;
}
file->private_data = &mailboxes[MINOR(inode->i_rdev)];
return 0;
}
2. 保存 Oops 信息
要解析 Oops 错误,首先得捕获它。若系统在启动时控制台未启用或挂起后崩溃,就无法看到 Oops 信息。可以采用以下简单方法保存信息:
- 只要重置时内存内容未损坏(通常不会损坏),就可以重启进入引导加载程序并使用它显示内存。需要知道内核日志缓冲区的位置,它是一个简单的文本消息环形缓冲区,符号为
超级会员免费看
订阅专栏 解锁全文
1406

被折叠的 条评论
为什么被折叠?



