可以使用 kmdb 和 mdb 来修改内核变量或其他内核状态。使用 mdb 修改内核状态时要格外谨慎,因为 mdb 在进行修改前不会停止内核。使用 kmdb 可以原子方式进行成组修改,因为 kmdb 会在允许用户访问之前停止内核。mdb 调试程序只能进行单个原子修改。
务必要使用正确的格式指示符来进行修改。格式可以为:
w-将每个表达式值的最低 2 个字节写入从点所指定的位置开始的目标位置
W-将每个表达式值的最低 4 个字节写入从点所指定的位置开始的目标位置
Z-将每个表达式值的全部 8 个字节写入从点所指定的位置开始的目标位置
使用 ::sizeof dcmd 可以确定要修改的变量的大小。
以下示例使用值 0x80000000 覆写 moddebug 的值。
> moddebug/W 0x80000000 moddebug: 0 = 0x80000000 |