# DynamicDebug **Repository Path**: DaHuYuXiXi/dynamic-debug ## Basic Information - **Project Name**: DynamicDebug - **Description**: 动态调试运行在服务器上的程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-01-11 - **Last Updated**: 2023-01-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 动态调试 可以编写测试代码,来完成对正在运行的服务进行测试。 步骤: 1. 当前项目安装到本地仓库 ![img.png](img.png) 2. 需要动态测试的服务,引入该jar包 ```xml dhy.xpy DynamicDebug 1.0 ``` 3. 编写测试类 ```java public class DynamicDebugTest { public static void debugTest(ApplicationContext applicationContext){ UserServiceImpl userService = applicationContext.getBean(UserServiceImpl.class); String test = userService.test(); System.out.println("测试结果为: "+test); } } ``` 测试方法 - 参数要求: 无参或者只有一个参数,该参数类型必须为ApplicationContext(整合Spring) - 修饰符要求: 必须是静态的,public的 注意: 测试类中涉及到的System.out和System.err在类加载过程通过修改常量池符合引用全部被替换为了HackSystem,HackSystem负责将原本输出到屏幕上的输出流输出到客户端Socket流中去。 4. 将编写好的测试类编译成.class文件后,通过http协议发送到对应的测试程序所在服务器 ![img_1.png](img_1.png) 前缀不固定: http://ip:port/context_path/dynamicDebug **项目中如果设置了servlet的contextPath,那么请求的时候需要加上** 请求测试结果样图如下: ![img_3.png](img_3.png) **** # 注意 本项目目前稳定支持的JDK版本为1.8,1.9+版本存在些许不兼容性(主要是在常量池替换过程中会出现一些bug,后续有时间会查阅Java虚拟机规范手册进行更正)