gpt4 book ai didi

java - Perf 动态跟踪无法添加事件

转载 作者:行者123 更新时间:2023-12-04 12:40:37 26 4
gpt4 key购买 nike

我正在尝试学习如何在运行一些用 C 编写的基于 JNI 的共享库的 java 应用程序上使用 perf 动态跟踪。该库通过路径 /opt/myapp/lib/libmyapp.so 安装,然后使用选项 -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 动态跟踪无法添加事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com