# agent-demo
**Repository Path**: who7708/agent-demo
## Basic Information
- **Project Name**: agent-demo
- **Description**: java agent debug
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-12-08
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 写一个Agent
## 编写一个Java类,并包含如下两个方法中的任一个:
```
public static void premain(String agentArgs, Instrumentation inst); //【1】
public static void premain(String agentArgs); //【2】
其中,【1】和【2】同时存在时,【1】会优先被执行,而【2】则会被忽略。
```
具体使用如下代码:
```
import java.lang.instrument.Instrumentation;
public class MyAgent {
public static void premain(String agentArgs, Instrumentation inst) {
System.out.println("this is an agent.");
System.out.println("args:" + agentArgs + "\n");
}
}
```
## jar打包
在代码的resources目录下添加META-INF/MANIFEST.MF文件。其目的是指定Premain-Class的类。
```
Manifest-Version: 1.0
Premain-Class: cn.net.spring.agent.demo.MyAgent
Can-Redefine-Classes: true
```
## 在pom.xml中配置打包的相关配置
```
jar
my-agent
org.apache.maven.plugins
maven-jar-plugin
2.3.2
true
src/main/resources/META-INF/MANIFEST.MF
org.apache.maven.plugins
maven-compiler-plugin
1.7
1.7
```
最后,执行mvn clean package,就能生成一个my-agent.jar
# 运行Agent
新建一个测试类。如下:
```
public class AgentTest {
public static void main(String[] args) {
System.out.println("this is main");
}
}
```
## 在idea中配置运行参数
找到 vm option 填写如下:
```
-javaagent:/Users/chmy/docker/skywalking/agent-demo/target/my-agent.jar=hello-agent
```
直接就可以debug了