我可以制作一个模板函数 noinline 还是强制它出现在分析器中?

Can I make a template function noinline or else force it to appear in the profiler?

我正在尝试在 Ubuntu 20.04 上使用 perf 进行分析,但问题是许多函数没有出现在其中(可能是因为它们是内联的),或者只出现了它们的地址(没有名字等)。我正在使用 CMake 的 RelWithDebInfo 构建。但是有一些模板函数我不知道如何将其带到分析器结果中。我认为如果这在 C++ 中对于模板函数是合法的,那么将它们标记为 noinline 可能会有所帮助,但这会破坏代码库并且需要按函数完成。有什么关于如何同时实现所有功能 noinline 的建议吗?

您可以将 -fno-inline 添加到 CMAKE_CXX_FLAGS

来自GCC man page

-fno-inline
      Do not expand any functions inline apart from those marked
      with the "always_inline" attribute.  This is the default when
      not optimizing.

      Single functions can be exempted from inlining by marking
      them with the "noinline" attribute.