问题标签 [byteman]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在运行时更改 byteman 的规则
我正在运行远程测试服务器,我想使用 byteman 对现有代码进行一些修改。
是否可以在运行时使用自定义规则文件附加 byteman(开始时我们应该设置规则文件,这在大多数情况下并不灵活)?
是否可以在启动服务器时将其附加到正在运行的服务器而不添加 -javaagent?
java - 使用 byteman 修改方法参数
我有如下所示的课程
我想编写一个 byteman 规则来捕获caller.invoke("suman");
方法调用并将参数“suman”修改为“suman1”。这意味着calle.invoke(arg);
在Caller
课堂上,参数应该是“suman1”。我尝试使用 byteman 规则捕获参数,但我不知道如何修改参数。
你能帮忙吗?
junit - Byteman JUnit Runner - 无法在自动关闭的 InputStream#close 上触发 IOException
我有以下代码:
当我提供的(有效)输入流应该被关闭时,我正在尝试使用 Byteman Junit Runner 来触发 IOException:
我的测试失败:errors 总是空的,这意味着 Byteman 规则显然没有被执行(它被代理很好地加载,所以我不明白发生了什么)。
如何在通过 try-with-resources 调用的 close 方法上触发 IOException?
java - Byteman - 跟踪给定包中的所有类和方法
使用 Byteman 时,我们必须在规则语法中指定类和方法。如果我想使用 Byteman 跟踪程序执行怎么办?
示例:我不知道在执行程序的某个功能时正在执行哪些方法。我想在功能执行期间识别调用的方法。
这是否意味着我必须为给定包中每个类的每个方法添加规则?或者有没有其他方法可以实现这一目标?
java - Byteman 阻止 Wildfly 8.1.0 启动?
当我的 wildfly 8.1.0 服务器启动时,它应该创建一个类的实例。
我不确定这是否发生,而且我无法更改源代码,所以我想我会使用 Byteman 来完成这个。
我为 Byteman 编写了这个规则文件,存储在C:\app\ECLSManagedConnectionFactory.btm
:
我下载了 Byteman 并将其解压缩到C:\byteman-3.0.3
.
我修改了我的java_opts
并让wildfly在启动期间回显了该值:
如果上面的第 2 行和第 3 行不存在,我的服务器会成功启动java_opts
,但是当我添加它们时,服务器根本不会启动。stdout 或 stderr 没有任何迹象表明正在发生的事情。我收到一条消息,要求检查server.log
更多信息,但该文件不存在。
我究竟做错了什么?我已经尝试了路径的斜线方向的每种组合(如果这很重要,在 Windows 10 上)。
真的有人用过这个byteman
工具吗?我很惊讶它在 Stack Overflow 上没有标签,而且网上可用的信息如此之少。
mule - ByteBuddy 1.10.2 抛出 `java.lang.IllegalStateException: Cannot resolve type description for java.lang.Exception`,和类似的
我Cannot resolve type description
在为. AgentBuilder.Listener.onError(...)
_AgentBuilder
Instrumentation
代理代码为:
这是使用 ByteBuddy v1.10.2 和 Mule 4 (jdk1.8) 作为目标应用程序。
这里有一篇关于同样问题的类似帖子,但回复并没有让我找到解决方案。
输出显示“来自 bytebuddy:agent premain”,但未显示“来自 bytebuddy:transform”。相反,日志显示属于引导类加载器的许多类的异常,例如:
似乎正在查询类型描述的类加载器没有提供所需的类。ClassFileLocator
有没有办法为这些查找指定替代方案?
导致错误的特定类加载器是:
org.mule.runtime.module.artifact.api.classloader.MuleArtifactClassLoader
有趣的是,当使用 Byteman 作为代理时,该工具按预期工作,具有以下规则文件:
任何意见,将不胜感激!谢谢您的帮助!
byteman - Byteman 4.0.11 没有完全发布到 Maven Central?
Byteman 网站发布了 4.0.11 版本的广告:https ://byteman.jboss.org/downloads.html
但是 Maven Central 上只有一些工件 ID 可用:https ://search.maven.org/search?q=g:org.jboss.byteman
发布过程中有什么问题吗?工件 ID 是否发生了变化?
bytecode-manipulation - Byteman 实施细节
我正在查看 byteman 实现,以了解它们如何专门用于跟踪变量 AT/AFTER nth read、AT/AFTER nth write 等情况。在他们的实现中,他们读取一个类两次以检查它是否与指定的规则匹配用户使用 RuleCheckMethodAdapter,第二次使用 RuleTriggerAdapter 在类中感兴趣的位置实际注入字节码(触发器)。我不明白的是为什么我们需要 2 次通过,为什么不能在第一次通过时,如果与规则匹配,我们可以添加触发器?对此的任何见解都会有所帮助。
java - 是否可以使用 ByteBuddy 拦截数组构造函数?
我有一个回归测试,我试图计算数组实例化的数量。具体来说,我有兴趣计算new int[..]
被调用的次数。我已经整理了以下基于 ByteBuddy 建议的工具,我认为它们应该可以捕获所有构造函数,但这不适用于数组(任何类型的):
当我运行这个测试时,我得到以下结果:
如果我更改final Object[] y = new Object[3]
为new Object()
,则输出为:
我已经使建议工具尽可能开放(至少在我认为可以做到的范围内开放),但这仍然没有检测数组对象的构造。
甚至可以检测数组对象的构造吗?
2020-07-28 更新
根据原始问题的上下文,提供的答案表示 ByteBuddy 不直接支持
new int[]
. 但是,对于那些对替代解决方案感兴趣的人,我能够使用Byteman实现这种检测。
wildfly - 跟踪 Wildfly 18 中部署的 WAR 文件中的类
我想在 Wildfly 18 中部署的应用程序中的方法上添加一些跟踪。
我只能看到从 Windows 命令提示符的控制台输出(不是 server.log)加载并打印了第一条规则,但从未打印过另一条规则。