web-dev-qa-db-ja.com

mdbを使用して変数値を読み取る方法は?

次のコマンドでパラメータを設定したとしましょう。後でそれを読み戻すにはどうすればよいですか?

mdb -kwe "spa_load_verify_metadata/W 0"

manページ を読み込もうとしていますが、一時的にこのOSにいるだけで、何を言っているのかわかりません。

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を使用して変数を見つけようとしましたが、ファイルシステムにありませんでした。これらの値がどこにあるのかという概念がわかりません...

私は実際に 存在することがわかっている他のパラメーター の値を読み取ろうとしているだけです。

2
Louis Waweru

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 Modular Debugger Guide

2
Scott McClung