首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过clang++的-finstrument-functions插入C++函数:如何忽略内部std库调用?

通过clang++的-finstrument-functions插入C++函数时,如果想要忽略内部std库调用,可以使用以下方法:

  1. 使用函数属性(Function Attribute):可以通过在函数声明或定义时添加__attribute__((no_instrument_function))属性来告诉编译器不要插入函数调用。例如:
代码语言:txt
复制
extern "C" void __cyg_profile_func_enter(void *this_fn, void *call_site) __attribute__((no_instrument_function));
extern "C" void __cyg_profile_func_exit(void *this_fn, void *call_site) __attribute__((no_instrument_function));
  1. 使用宏定义:可以在需要忽略的函数调用前后使用宏定义来控制是否插入函数调用。例如:
代码语言:txt
复制
#define INSTRUMENT_FUNCTION __cyg_profile_func_enter
#define UNINSTRUMENT_FUNCTION __cyg_profile_func_exit

void foo() {
    // 在需要忽略的函数调用前后使用宏定义
    INSTRUMENT_FUNCTION(this, call_site);
    // 忽略的函数调用
    UNINSTRUMENT_FUNCTION(this, call_site);
}

需要注意的是,以上方法适用于通过-finstrument-functions插入函数调用的情况,对于其他插桩方式可能需要使用不同的方法来忽略内部std库调用。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(云原生无服务器计算服务):https://cloud.tencent.com/product/scf
  • 腾讯云云服务器(云上虚拟服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(云数据库服务):https://cloud.tencent.com/product/cdb
  • 腾讯云对象存储(云上对象存储服务):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(云上区块链服务):https://cloud.tencent.com/product/bcs
  • 腾讯云人工智能(云上人工智能服务):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(云上物联网服务):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(云上移动开发服务):https://cloud.tencent.com/product/mad
  • 腾讯云音视频(云上音视频服务):https://cloud.tencent.com/product/vod
  • 腾讯云网络安全(云上网络安全服务):https://cloud.tencent.com/product/ddos
  • 腾讯云存储(云上存储服务):https://cloud.tencent.com/product/cos
  • 腾讯云元宇宙(云上元宇宙服务):https://cloud.tencent.com/product/mu
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券