【问题标题】:C++ entry points not showing up in node.js profiling outputC++ 入口点未显示在 node.js 分析输出中
【发布时间】:2020-01-28 00:02:48
【问题描述】:

当在 macOS 上运行 node --prof <command> 和之后的 node --prof-process 时,我的分析输出不再显示任何 C++ 入口点,导致我的分析数据中出现许多无法解释的空白。大约在同一时间发生了变化,我现在只在这些分析树中看到 node 二进制文件,以前它没有出现,所以就好像分析器不再能够“深入”到节点的内部。

我认为这是在尝试使用 csrutil 提高 dtrace 权限时开始的,但我已将其恢复为出厂设置,但这种情况仍然存在。

是什么导致 C++ 入口点不显示在跟踪中?有没有办法解决这个问题?

更新

刚刚尝试使用 csrutil disable 完全关闭 SIP(​​这是一件坏事),但问题仍然存在,所以 SIP 在这里可能是一个红鲱鱼。

【问题讨论】:

    标签: node.js macos profiling v8


    【解决方案1】:

    node.js github issue 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++ 符号的能力。在我接受许可后,分析器又开始正常工作了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多