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++filtnm。当我尝试报告我安装了哪些命令的版本时,我收到了 nm:

的消息
» nm --version                                                                                                                                           
Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” and then retry this command.

显然,接受许可的要求可能是在升级后添加的,这会阻止探查器查找和分解 C++ 符号的能力。在我接受许可后,分析器又开始正常工作了。

希望这可以帮助其他人 运行 处理相同的场景。