如何使用 mdb 读取变量值?

如何使用 mdb 读取变量值?

假设我使用以下命令设置了一个参数,稍后如何读取它?

mdb -kwe "spa_load_verify_metadata/W 0"

我正在尝试阅读手册页,但我只是暂时使用这个操作系统,不明白它在说什么。

The search modifiers are:
       l   Search for the specified 2-byte value.
       L   Search for the specified 4-byte value.
       M   Search for the specified 8-byte value.

我通常期望该值位于/sys/modules/zfs/parameters/spa_load_verify_metadata我可以得到cat的值,但/sys甚至不存在。

我尝试使用 查找变量find,但它不在文件系统中。我不明白这些值在哪里的概念......

我实际上只是想读取的值我知道存在的其他参数

答案1

在 Linux 上,导出内核参数的自然方法是 /sys 或 /proc 中的虚拟文件。在 Solaris 及其衍生版本上,调试器 mdb 可用于读取和写入值。

# mdb -ke "spa_load_verify_metadata::print"
0x1 (B_TRUE)

或者像我以前那样:

# echo "spa_load_verify_metadata::print" | mdb -k
0x1 (B_TRUE)

您可以使用调试器找到有关该符号的更多信息:

# mdb -k
> spa_load_verify_metadata::nm 
Value              Size               Type  Bind  Other Shndx    Name
0xfffffffffbfc11f0|0x0000000000000004|OBJT |GLOB |0x0  |6       |spa_load_verify_metadata

更多信息可以在这里找到:Oracle Solaris 模块化调试器指南

相关内容