node.js 分析输出中未显示 C++ 入口点
C++ entry points not showing up in node.js profiling output
当 运行 node --prof <command>
,然后稍后 node --prof-process
在 macOS 上,我的分析输出不再显示任何 C++ 入口点,导致大量无法解释的差距在我的分析数据中。大约在同一时间发生了变化,我现在只在这些分析树中看到了 node
二进制文件,它以前没有出现过,所以就像分析器不再能够 "dive in" 到内部节点。
我认为这是在尝试使用 csrutil
提高 dtrace 权限时开始的,但我已将其恢复为出厂设置,但仍然发生这种情况。
是什么导致 C++ 入口点未显示在跟踪中?有办法解决这个问题吗?
更新:
刚刚尝试使用 csrutil disable
完全关闭 SIP(这是一件坏事),但问题仍然存在,所以 SIP 在这里可能是一个转移注意力的问题。
node.js github 期中的奇才 figured this out。
简而言之,我了解到 macOS 上的分析器使用了两个命令:c++filt
和 nm
。当我尝试报告我安装了哪些命令的版本时,我收到了 nm
:
的消息
» nm --version
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
显然,接受许可的要求可能是在升级后添加的,这会阻止探查器查找和分解 C++ 符号的能力。在我接受许可后,分析器又开始正常工作了。
希望这可以帮助其他人 运行 处理相同的场景。
当 运行 node --prof <command>
,然后稍后 node --prof-process
在 macOS 上,我的分析输出不再显示任何 C++ 入口点,导致大量无法解释的差距在我的分析数据中。大约在同一时间发生了变化,我现在只在这些分析树中看到了 node
二进制文件,它以前没有出现过,所以就像分析器不再能够 "dive in" 到内部节点。
我认为这是在尝试使用 csrutil
提高 dtrace 权限时开始的,但我已将其恢复为出厂设置,但仍然发生这种情况。
是什么导致 C++ 入口点未显示在跟踪中?有办法解决这个问题吗?
更新:
刚刚尝试使用 csrutil disable
完全关闭 SIP(这是一件坏事),但问题仍然存在,所以 SIP 在这里可能是一个转移注意力的问题。
node.js github 期中的奇才 figured this out。
简而言之,我了解到 macOS 上的分析器使用了两个命令:c++filt
和 nm
。当我尝试报告我安装了哪些命令的版本时,我收到了 nm
:
» nm --version
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.
显然,接受许可的要求可能是在升级后添加的,这会阻止探查器查找和分解 C++ 符号的能力。在我接受许可后,分析器又开始正常工作了。
希望这可以帮助其他人 运行 处理相同的场景。