bpftrace吗?关于跟踪C ++函数

问题描述 投票:1回答:1

我对bpftrace语法有疑问,希望有人以前见过。

[参考bpftrace参考文档,我已经成功跟踪了用户应用程序功能。那里没有问题。

我不知道如何将探针附加到C ++方法。

例如,这是我正在使用的语法和错误:

machine-name /tmp # bpftrace -e 'uretprobe:/usr/share/BigApp:BigApp::MethodName { printf("method return\n"); }'
1.34-35: syntax error, unexpected path, expecting {
machine-name /tmp # 

将bpftrace探针附加到C ++用户应用程序的正确语法是什么?

c++ trace ebpf
1个回答
1
投票

main.cpp

#include <iostream>

class BigApp {
  public:
    void methodName() {
      std::cout << "method Name!";
    }
};

int main() {
  BigApp bigApp;      
  bigApp.methodName();      
  return 0;
}

g++ main.cpp -o main

# locate mangled symbol name
readelf -Ws /home/koxt/dev/cpp/main | grep methodName
69: 00000000004007ee    30 FUNC    WEAK   DEFAULT   14 _ZN6BigApp10methodNameEv

bpftrace -e 'uprobe:/home/koxt/dev/cpp/main:_ZN6BigApp10methodNameEv { printf("1"); }'
© www.soinside.com 2019 - 2024. All rights reserved.