深入探究系统调试与串口控制台的应用
1. 调试中的GDB异常现象
在调试过程中,我们可能会遇到一些看似奇怪的GDB问题。例如,当尝试查看 vp->v_rdev 时,会出现如下情况:
(kgdb) p vp->v_rdev
There is no member named v_rdev.
(kgdb)
通常情况下,这样的操作应该是可行的,但这里GDB给出的提示是正确的。实际上, v_rdev 是一个便利宏,它会展开为 v_un.vu_spec.vu_specinfo 。要查看 vp->v_rdev ,可以输入以下命令:
(kgdb) p vp->v_un.vu_spec.vu_specinfo
$5 = (struct specinfo *) 0x0
(kgdb)
从这里可以识别出一个空指针。进一步查看 vp 结构的内容,会发现 v_type = VBAD ,这表明该 vnode 当前未被使用,且不应该出现在系统的这个部分。开发者可能会立即关注这个问题,并尝试找出系统为何要将新的 vnode 设置为无效值。
2. Vmcore文件与安全问题
Vmcore文件包含系统在崩溃
超级会员免费看
订阅专栏 解锁全文
1万+

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



