我对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 ++用户应用程序的正确语法是什么?
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"); }'