mdb를 사용하여 변수 값을 읽는 방법은 무엇입니까?

mdb를 사용하여 변수 값을 읽는 방법은 무엇입니까?

다음 명령을 사용하여 매개변수를 설정했다고 가정해 보겠습니다. 나중에 어떻게 읽을 수 있나요?

mdb -kwe "spa_load_verify_metadata/W 0"

읽으려고 노력 중이에요매뉴얼 페이지, 하지만 저는 이 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 변수를 사용해 보았 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 모듈식 디버거 안내서

관련 정보