Solaris

如何使用 mdb 讀取變數值?

  • March 1, 2020

假設我用以下命令設置了一個參數,我以後怎麼讀回來?

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,但它不在文件系統中。我不明白這些值在哪裡的概念……

我實際上只是想讀取我知道存在的其他參數的值。

在 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 模組化調試器指南

引用自:https://unix.stackexchange.com/questions/570348