Macos “是什么意思?”;搜索树文件';不支持s格式版本号(0)";?
在Xcode 9上的macOS 10.13 High Sierra中,我收到以下日志消息: 2017-09-28 15:19:28.246511+0800 wr[5376:128702]消息跟踪器: 加载\域\白名单\搜索\树:73:搜索树文件的格式 不支持版本号(0) 2017-09-28 15:19:28.246541+0800 wr[5376:128702]MessageTracer:返回默认白名单Macos “是什么意思?”;搜索树文件';不支持s格式版本号(0)";?,macos,xcode9,macos-high-sierra,Macos,Xcode9,Macos High Sierra,在Xcode 9上的macOS 10.13 High Sierra中,我收到以下日志消息: 2017-09-28 15:19:28.246511+0800 wr[5376:128702]消息跟踪器: 加载\域\白名单\搜索\树:73:搜索树文件的格式 不支持版本号(0) 2017-09-28 15:19:28.246541+0800 wr[5376:128702]MessageTracer:返回默认白名单 此消息的含义是什么?这些消息来自/usr/lib/libDiagnosticMessage
此消息的含义是什么?这些消息来自
/usr/lib/libDiagnosticMessagesClient.dylib
中的函数msgtracer\u domain\u new
NSApplicationMain
正上方的main
pushq%rbp
断点集-n msgtracer\u domain\u new
libDiagnosticMessagesClient.dylib`msgtracer_domain_new:
-> 0x7fff667c7f08 <+0>: pushq %rbp
0x7fff667c7f09 <+1>: movq %rsp, %rbp
0x7fff667c7f0c <+4>: pushq %r15
(omit)
0x7fff667c7ff1 <+233>: leaq 0xc1d(%rip), %rdi ; "/Library/Application Support/CrashReporter/SubmitDiagInfo.domains"
0x7fff667c7ff8 <+240>: xorl %r13d, %r13d
0x7fff667c7ffb <+243>: movl $0x20, %esi
0x7fff667c8000 <+248>: xorl %eax, %eax
0x7fff667c8002 <+250>: callq 0x7fff667c8990 ; symbol stub for: open
(omit)
0x7fff667c801d <+277>: leaq 0xc33(%rip), %rsi ; "format_version"
0x7fff667c8024 <+284>: movl $0x4, %ecx
0x7fff667c8029 <+289>: xorl %r8d, %r8d
0x7fff667c802c <+292>: xorl %r9d, %r9d
0x7fff667c802f <+295>: movl %r15d, %edi
0x7fff667c8032 <+298>: movq %r12, %rdx
0x7fff667c8035 <+301>: callq 0x7fff667c895a ; symbol stub for: fgetxattr
0x7fff667c803a <+306>: cmpl %r13d, (%r12)
0x7fff667c803e <+310>: jne 0x7fff667c808b ; <+387>
0x7fff667c8040 <+312>: movl $0x0, (%rsp)
0x7fff667c8047 <+319>: leaq 0xc18(%rip), %rcx ; "MessageTracer: %s:%d: Search tree file's format version number (%u) is not supported"
0x7fff667c804e <+326>: leaq 0xb9e(%rip), %r8 ; "load_domain_whitelist_search_tree"
(omit)
0x7fff667c808f <+391>: leaq 0xc25(%rip), %rcx ; "MessageTracer: Falling back to default whitelist"
0x7fff667c8096 <+398>: xorl %edi, %edi
0x7fff667c8098 <+400>: xorl %esi, %esi
0x7fff667c809a <+402>: movl $0x6, %edx
0x7fff667c809f <+407>: xorl %eax, %eax
0x7fff667c80a1 <+409>: callq 0x7fff667c8924 ; symbol stub for: asl_log
该文件没有函数msgtracer\u domain\u new所需的xattrformat\u版本
有人知道如何更新吗
追加:
研究类似现象的提示
查找应用程序的进程id
$ ps -ef | grep your_app_name | grep -v grep
999 86803 86804 0 1:34AM ?? 0:00.97 /Users/xxx/Library/Developer/Xcode/DerivedData/....
获取应用程序已加载的文件路径
$ vmmap 86803 | perl -ne 'print "$1\n" if m{(/\S*)\Z}' | sort -u > z
根据需要编辑临时文件以删除不相关的文件路径
查找包含消息的文件
$ cat z | xargs grep -l -b 'Search tree file' 2> /dev/null
/usr/lib/libDiagnosticMessagesClient.dylib
确认消息是否存在
$ strings /usr/lib/libDiagnosticMessagesClient.dylib | grep 'Search tree file'
MessageTracer: %s:%d: Search tree file's format version number (%u) is not supported
生成调试器命令,然后应用它们
$ nm /usr/lib/libDiagnosticMessagesClient.dylib | grep " T " | sort -u | perl -pe 's/.* _/breakpoint set -n /'
breakpoint set -n msgtracer_domain_new
breakpoint set -n msgtracer_domain_free
breakpoint set -n msgtracer_msg_new
breakpoint set -n msgtracer_set
breakpoint set -n msgtracer_msg_free
breakpoint set -n msgtracer_vlog
breakpoint set -n msgtracer_log
breakpoint set -n msgtracer_vlog_with_keys_skip_nulls
breakpoint set -n msgtracer_vlog_with_keys
breakpoint set -n msgtracer_log_with_keys
breakpoint set -n msgtracer_log_with_keys_skip_nulls
breakpoint set -n msgtracer_uuid_create
上述方式并不完美。它不考虑文件路径中的空白。只要有效,就可以了。
我喜欢使用perl
来处理文本。您将使用您喜爱的日志。此命令将删除日志消息:
xattr -w format_version 1 "/Library/Application Support/CrashReporter/SubmitDiagInfo.domains"
我在一台更新为High Sierra的计算机上看到了这个问题
我转到系统首选项中的安全和隐私面板。在“隐私”选项卡上,我解锁并更新了隐私设置。我设置了与苹果和第三方开发者的共享。问题消失了。我正在尝试让我的应用程序保存,然后重新加载对数据文件的访问-即,用户选择应用程序文件希望读取的文件,并且该选择应在应用程序文件保存/加载后继续。我已经合并了URL(resolvingBookmarkData:)和朋友,但到目前为止还没有成功。这样做对我来说是触发这些错误的原因,所以请检查您的沙箱。我也在一个完全不相关的上下文中看到了这一点。我敢打赌,在High Sierra中的代码发布之前,一些苹果工程师只是忘记删除日志语句。这很可能与我们无关,我也是。我无法找到原因。请尝试更新您的隐私设置,以便在系统首选项中与Apple和第三方开发人员共享诊断。@Adam Tora回答中对此进行了解释:“该文件没有一些旧计算机上的函数msgtracer\u domain\u new
”所期望的xattrformat\u版本。因此,在文件中写入xattrformat\u version
应该可以解决这个问题。
xattr -w format_version 1 "/Library/Application Support/CrashReporter/SubmitDiagInfo.domains"