前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Byteman 使用指南(十一)

Byteman 使用指南(十一)

作者头像
FunTester
发布2025-02-19 12:58:40
发布2025-02-19 12:58:40
5600
代码可运行
举报
文章被收录于专栏:FunTester
运行总次数:0
代码可运行

使用 Java

如果通过 Java 命令行或 Ant 使用 Byteman,需先下载并安装 Byteman。最新的 Byteman 版本可作为 zip 文件从 Byteman 项目下载页面获取。

下载二进制发行版或完整发行版后,将其安装到希望运行 Byteman 的机器的可访问目录中。本指南假定环境变量 BYTEMAN_HOME 指向解压后的二进制发行版目录。

  • 二进制发行版:包含所有二进制文件(类文件 JARs 和命令脚本)、程序员指南副本、示例脚本以及相关帮助器 JAR。
  • 完整发行版:在二进制发行版的基础上增加源代码和 javadoc JARs。

使用 Ant

若通过 Ant 使用 Byteman,需要 BMUnit 软件包以集成 Byteman 与 JUnit 或 TestNG。有关如何在 Ant 构建脚本中配置以引用 Byteman 下载中的必要 JAR 的信息。更复杂的使用示例可参见 Byteman 故障注入教程。

FunTester注意:从 Byteman 1.1 开始,代理仅支持在 JDK 6 或 7 上运行。旧版本支持 JDK 5。

使用 Maven

若通过 Maven 使用 Byteman,特别是结合 BMUnit 软件包用于 JUnit 和 TestNG 的集成,只需声明对 Byteman JAR 的依赖即可。Maven 将自动从中央仓库下载所需 JAR。

pom.xml 中添加所需依赖的详细信息。更复杂的使用场景可参见 Byteman 故障注入教程。此外,Byteman 提供了一个 Maven 插件,可在测试周期中解析和类型检查测试规则脚本。

获取源代码构建树

若想了解 Byteman 的内部工作原理,或为项目贡献代码,可从主 Git 仓库获取最新源代码。源代码树采用 Maven 项目结构。

从源代码构建 Byteman

在源代码树顶级目录下执行以下命令可构建 Byteman:

代码语言:javascript
代码运行次数:0
复制
mvn package

此命令会在每个子模块的 target 目录(如 agent/targetsubmit/target)中生成二进制、源代码和 javadoc JAR,并在 download/target 目录下生成二进制和完整发行版的 zip 文件。

  • Ant/Java 命令行用户:将 zip 文件解压到本地 BYTEMAN_HOME 目录。
  • Maven 用户:需在本地 Maven 仓库中安装 Byteman JAR,执行:
代码语言:javascript
代码运行次数:0
复制
mvn install

在执行此命令前,应修改根 pom.xml 中的项目版本及子模块的父版本,以避免覆盖中央仓库中的官方版本。

使用 Byteman 运行应用程序

Byteman 教程提供了从简单示例到复杂测试用例的详细说明。建议新手首先参考以下教程:

  • Byteman 命令行教程:介绍通过命令行运行 Byteman 的基础操作。
  • Byteman BMUnit 教程:演示如何通过 Ant 或 Maven 将 Byteman 集成到 JUnit 或 TestNG 测试中。
  • Byteman 故障注入教程:展示了使用 Byteman 进行故障注入测试的高级功能。

配置 Java 代理

通过 Java 命令行使用 Byteman 只需在 JVM 启动时添加一个参数,指向 Byteman 代理及规则脚本文件:

代码语言:javascript
代码运行次数:0
复制
-javaagent:agentlib=options

参数说明

  • agentlib:Byteman JAR 的路径。JAR 包含元数据文件,允许 JVM 识别代理入口点。
  • options:逗号分隔的选项列表:

选项

说明

script:file

指定规则脚本文件路径,加载后应用于目标类。支持多个 script 参数。

resourcescript:file

类似于 script,但从 CLASSPATH 查找规则文件。

listener:true/false

启用侦听器线程,支持动态加载/卸载规则(通过 bmsubmit 脚本)。

port:portnum

指定侦听器端口,默认值为 9091。提供该选项将自动启用侦听器。

address:host

指定侦听器地址,默认值为 localhost。提供该选项将自动启用侦听器。

manager:class

指定管理规则库的自定义管理器类,实现对规则的加载、卸载和查询。

sys:jarpath

指定 JAR 文件路径以添加到 JVM 系统类路径,用于解析规则所需的帮助器类。

boot:jarpath

指定 JAR 文件路径以添加到 JVM 引导类路径,用于注入 JVM 类中的规则。

policy:true/false

启用全权访问安全策略,用于受安全管理员限制的 JVM(如 JBoss Wildfly/EAP)。

prop:name=value

设置系统属性,name 必须以 org.jboss.byteman. 开头。

FunTester注意:若规则目标类由引导类加载器加载,需通过 boot:${BYTEMAN_HOME}/lib/byteman.jar 将 Byteman JAR 添加到引导类路径中。bmjava 脚本会自动处理此需求。

模块支持

Byteman 提供 modules:classname 选项用于模块化运行时中管理类解析。可配置插件类如 org.jboss.byteman.modules.jbossmodules.JBossModulesSystem。JBoss Modules 插件随 Byteman zip 文件一并提供。

FunTester动态安装:使用 bminstall -m 命令可自动配置模块插件。插件 JAR 路径为 $BYTEMAN_HOME/contrib/jboss-modules-system

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FunTester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用 Java
  • 使用 Ant
  • 使用 Maven
  • 获取源代码构建树
  • 从源代码构建 Byteman
  • 使用 Byteman 运行应用程序
  • 配置 Java 代理
    • 参数说明
    • 模块支持
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档