处理 node.js 分析时 "Code move event for unknown code" 是什么意思?
What does "Code move event for unknown code" mean when processing node.js profiling?
在节点 (v10.15.3
) 中,我一直在使用 node --prof <script>
进行分析,然后使用 node --prof-process <output>
总结输出。生成的摘要有很多不明原因的滴答声,这可能与 运行 第二步时的大量错误有关,类似于以下内容:
...
Code move event for unknown code: 0x3663777f8b98
Code move event for unknown code: 0x3663777f9018
Code move event for unknown code: 0x3663777f9790
Code move event for unknown code: 0x36635f5fb5a8
Code move event for unknown code: 0x3663777f9b78
Code move event for unknown code: 0x3663777f9d00
Code move event for unknown code: 0x3663777fa150
Code move event for unknown code: 0x3663777fa7f8
Code move event for unknown code: 0x36635f5fe630
这个 "Code move event for unknown code" 错误意味着什么?是否有补救措施可以在我的分析调查中提供更多详细信息?
简而言之:这意味着有些事情很奇怪,并且(可能)您无能为力:-(
使用 --prof
生成的日志文件包含三种相关类型的条目:
(1) "code object for function F created at address A with size S"
(2) "code object moved from address A1 to address A2"
(3) "execution sample was taken at address E"
滴答处理器使用类型 (1) 和 (2) 的条目来构建对应于函数的代码对象映射,因此当它看到类型 (3) 的条目时,它会寻找正确的函数,这样A <= E && E <= A+S 然后报告该功能已收到探查器滴答声。
当数据不一致时,日志文件可能会包含一个移动事件(类型 (2) 的条目),该事件位于地址 A1 处的假定代码对象,而该类型的条目中从未提及过(1) 之前。在这种情况下,报价处理器不知道该怎么做,所以它会打印一条警告。
您的猜测很可能是正确的。
您可以尝试的一种解决方法(可能有用也可能无用)是指定 --nocompact-code-space
和 --prof
。 不应该是必要的,但是你不应该得到那些未知代码的移动事件......
找到根本原因。在我的例子中,这是因为对于 MacOS,符号是通过 c++filt
和 nm
处理的。后者无法正常工作,因为:
» nm --version
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
在运行此命令接受许可后,符号正确解析。
在节点 (v10.15.3
) 中,我一直在使用 node --prof <script>
进行分析,然后使用 node --prof-process <output>
总结输出。生成的摘要有很多不明原因的滴答声,这可能与 运行 第二步时的大量错误有关,类似于以下内容:
...
Code move event for unknown code: 0x3663777f8b98
Code move event for unknown code: 0x3663777f9018
Code move event for unknown code: 0x3663777f9790
Code move event for unknown code: 0x36635f5fb5a8
Code move event for unknown code: 0x3663777f9b78
Code move event for unknown code: 0x3663777f9d00
Code move event for unknown code: 0x3663777fa150
Code move event for unknown code: 0x3663777fa7f8
Code move event for unknown code: 0x36635f5fe630
这个 "Code move event for unknown code" 错误意味着什么?是否有补救措施可以在我的分析调查中提供更多详细信息?
简而言之:这意味着有些事情很奇怪,并且(可能)您无能为力:-(
使用 --prof
生成的日志文件包含三种相关类型的条目:
(1) "code object for function F created at address A with size S"
(2) "code object moved from address A1 to address A2"
(3) "execution sample was taken at address E"
滴答处理器使用类型 (1) 和 (2) 的条目来构建对应于函数的代码对象映射,因此当它看到类型 (3) 的条目时,它会寻找正确的函数,这样A <= E && E <= A+S 然后报告该功能已收到探查器滴答声。
当数据不一致时,日志文件可能会包含一个移动事件(类型 (2) 的条目),该事件位于地址 A1 处的假定代码对象,而该类型的条目中从未提及过(1) 之前。在这种情况下,报价处理器不知道该怎么做,所以它会打印一条警告。
您的猜测很可能是正确的。
您可以尝试的一种解决方法(可能有用也可能无用)是指定 --nocompact-code-space
和 --prof
。 不应该是必要的,但是你不应该得到那些未知代码的移动事件......
找到根本原因。在我的例子中,这是因为对于 MacOS,符号是通过 c++filt
和 nm
处理的。后者无法正常工作,因为:
» nm --version
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
在运行此命令接受许可后,符号正确解析。