MacOS X 10.9 和 10.9.1 包含一个 Finder 错误,该错误在使用 SMB v2 服务器时会暴露出来。(此错误已通知 Apple,并在此处简要描述: smb v2 Finder 错误 / Mavericks)。
我发现man nsmb.conf
内核调试级别是可能的:
Possible keywords may include:
Keyword Section Default Comment
A B C Values
[...]
kloglevel + - - 0 Turn on smb kernel logging
但如果我甚至不知道这是一个位模式还是一个整数,那么这毫无用处。
在内核源代码树,我想知道这个调试级别在哪里使用以及如何使用。
如何找到定义或使用此调试级别的源(.c 或 .h 文件)?
答案1
必要的来源位于这里:
smb-697-1.1
下载后,必须使用以下命令扩展此 tarball:
gzcat smb-697.1.1.tar.gz | tar xvf -
在此源树中,可以通过以下方式识别相关源:
cd smb-697.1.1
find . -type f -exec grep -H -i loglevel {} \;
最后我们发现:
kernel/smbfs/smbfs_vfsops.c
初始化:
smbfs_loglevel = args->KernelLogLevel;
然后:
kernel/netsmb/smb_subr.h
定义:
#define SMB_NO_LOG_LEVEL 0x00
#define SMB_LOW_LOG_LEVEL 0x01
#define SMB_ACL_LOG_LEVEL 0x02
#define SMB_IO_LOG_LEVEL 0x04
#define SMB_AUTH_LOG_LEVEL 0x08
和用途:
if (smbfs_loglevel & SMB_AUTH_LOG_LEVEL) \
因此kloglevel
是 4 位的位模式。