perf 动态追踪 添加事件失败
Perf dynamic tracing Failed to add events
我正在尝试学习如何在我的 java 应用程序 运行 上使用 perf 动态跟踪以及一些用 C 编写的基于 JNI 的共享库。该库通过路径 [=13] 安装=] 然后是 运行 和选项 -Djava.library.path=/opt/myapp/lib/
。所以我运行下面的命令:
root@mypc:~# perf probe -x /opt/myapp/lib/libmyapp.so --add Java_net_my_app_pollEvents0
Error: Failed to add events.
没有任何关于错误原因的提示。如果库中没有具有这样名称的全局函数,我将得到相应的错误描述:
root@mypc:~# perf probe -x /opt/myapp/lib/libmyapp.so --add Java_net_my_app_pollEvents1234567
Probe point 'Java_net_my_app_pollEvents1234567' not found.
Error: Failed to add events.
任何人都可以提示如何解决这个问题吗?我尝试为 malloc
函数添加一个探针,它工作得很好:
root@mypc:~# perf probe -x /lib/x86_64-linux-gnu/libc-2.27.so --add malloc
Added new event:
probe_libc:malloc (on malloc in /lib/x86_64-linux-gnu/libc-2.27.so)
You can now use it in all perf tools, such as:
perf record -e probe_libc:malloc -aR sleep 1
在我的例子中,“参数列表太长”错误是因为我将一个很长的损坏的 C++ 符号名称传递给 perf probe
;使用 EVENT=
语法显式命名探测点允许成功添加探测点:
$ sudo perf probe -x myelf --no-demangle --add myalias=_SomeVeryLongMangledNameWhee
$ sudo perf record -e 'probe_myelf:myalias' -a -- sleep 30
我正在尝试学习如何在我的 java 应用程序 运行 上使用 perf 动态跟踪以及一些用 C 编写的基于 JNI 的共享库。该库通过路径 [=13] 安装=] 然后是 运行 和选项 -Djava.library.path=/opt/myapp/lib/
。所以我运行下面的命令:
root@mypc:~# perf probe -x /opt/myapp/lib/libmyapp.so --add Java_net_my_app_pollEvents0
Error: Failed to add events.
没有任何关于错误原因的提示。如果库中没有具有这样名称的全局函数,我将得到相应的错误描述:
root@mypc:~# perf probe -x /opt/myapp/lib/libmyapp.so --add Java_net_my_app_pollEvents1234567
Probe point 'Java_net_my_app_pollEvents1234567' not found.
Error: Failed to add events.
任何人都可以提示如何解决这个问题吗?我尝试为 malloc
函数添加一个探针,它工作得很好:
root@mypc:~# perf probe -x /lib/x86_64-linux-gnu/libc-2.27.so --add malloc
Added new event:
probe_libc:malloc (on malloc in /lib/x86_64-linux-gnu/libc-2.27.so)
You can now use it in all perf tools, such as:
perf record -e probe_libc:malloc -aR sleep 1
在我的例子中,“参数列表太长”错误是因为我将一个很长的损坏的 C++ 符号名称传递给 perf probe
;使用 EVENT=
语法显式命名探测点允许成功添加探测点:
$ sudo perf probe -x myelf --no-demangle --add myalias=_SomeVeryLongMangledNameWhee
$ sudo perf record -e 'probe_myelf:myalias' -a -- sleep 30