4

我正在尝试使用__cyg_profile_func_*with-finstrument-functions在函数运行之前和之后进行特定检查(例如,检查 Mach 端口泄漏等)。这是在 OS X 上。

该代码已编写且功能齐全,但我有大量未定义的引用,例如,

std::__1::basic_ios<wchar_t, std::__1::char_traits<wchar_t> >::init(std::__1::basic_streambuf<wchar_t, std::__1::char_traits<wchar_t> >*)

似乎可能正在发生某种内联,但仪器仍在尝试引用该函数的非内联版本。是否可以免除标准 C++ 库的检测?或者,可以在这种特殊情况下完全禁用 clang 的内联?

干杯!

4

2 回答 2

0

在 gcc 中,-finstrument-functions-exclude-file-list=stdlib/include会做你想做的事。但是,它还没有在 clang 中实现(至少trunk 不识别这个选项)。

于 2013-11-11T16:49:22.250 回答
0

Clang 有一个-finstrument-functions-after-inlining在这种情况下可以使用的选项。是的,不幸的是,clang 不支持基于文件/目录禁用检测。如果检测太麻烦,那么更改标准 C++ 库的源代码以添加属性也可能会有所帮助。请参阅:https ://stackoverflow.com/a/69474100/811335

于 2021-10-07T05:09:09.367 回答