jvm-sandbox实战之windows调试

由于jvm-sandbox目前只提供了shell脚本来进行运行安装部署,对于mac电脑比较方便,但是windows的方式的话比较痛苦,走了很多弯路,慢慢深入了解之后发现windows的方式也是可以去做的。

1. 下载安装包

细看sandbox提供的一些脚本可以发现,其实脚本里的内容就是想把本地的项目结构打包成:

├── bin
│   ├── attach-pid.sh
│   ├── sandbox.sh
│   └── z-demo.sh
├── cfg
│   ├── repeater-config.json
│   ├── repeater-logback.xml
│   ├── repeater.properties
│   ├── sandbox-logback.xml
│   ├── sandbox.properties
│   └── version
├── example
│   └── sandbox-debug-module.jar
├── install-local.sh
├── lib
│   ├── sandbox-agent.jar
│   ├── sandbox-core.jar
│   └── sandbox-spy.jar
├── module
│   └── sandbox-mgr-module.jar
├── provider
│   └── sandbox-mgr-provider.jar
├── sandbox-module
│   ├── repeater-module-1.0.0-SNAPSHOT-jar-with-dependencies.jar
│   ├── sandbox-debug-module-1.3.3-jar-with-dependencies.jar
│   └── sandbox-manager-module-1.3.3-jar-with-dependencies.jar
├── sandbox-my-demo.jar
├── start.sh
└── z-demo-1.3.3.jar

如果你不想重写那一套shell脚本的话,可以手动构建这些模块,当然它也提供了一套已经打包好的方式,你可以下载

  • sandbox-stable-bin.zip

下载完成之后解压到对应的目录就行了。

2. 打包依赖

我们可以内部写一些模块,然后通过maven打包之后,安装包目录的lib下进行替换,比如:

├── lib
│   ├── sandbox-agent.jar
│   ├── sandbox-core.jar
│   └── sandbox-spy.jar

这三个包,在源码模块下的target模块下找到如:

  • sandbox-spy-1.3.3-jar-with-dependencies.jar 替换成 sandbox-spy.jar
  • sandbox-core-1.3.3-jar-with-dependencies.jar 替换成 sandbox-core.jar

3. IDEA 通过 agent启动

比如你有一个SpringBoot应用,那么在运行配置上加入如下配置:

-javaagent:E:\\study\sandbox\\lib\\sandbox-agent-1.3.3-jar-with-dependencies.jar
img

基本上沙箱环境已经差不多可以了.

4. 加入自定义的模块

你可以将他的debug模块放入安装包解压的sandbox-module 目录下进行调试,在启动的时候,agent的执行过程会经过sandbox-module下找对应的插件包.

你只需要打断点就行了.

img

还有如果启动的时候打断点,请在实现了*LoadCompleted*接口的类中loadCompleted方法去操作,因为该接口是沙箱环境启动的时候会回调初始化的。

其他的像debug模块的很多方法需要手动调用才会进入,初始化的时候不会进入。

需要注意的是,你每次写完代码并且编译打包之后,需要移动该包到sandbox安装包的sandbox-module的目录下,不然会出现源码断点对应不上的问题。

提供一个自动拷贝jar的maven插件,在你每次打包时,会将对应的包打到安装包目录下更方便。


  
    
      org.apache.maven.plugins
      maven-antrun-plugin
      1.8
      
        
          copy-lib-src-webapps
          package
          
            
              
                
                  
                
              
            
          
          
            run
          
        
      
    
  

另外如果调试的时候发现任何问题切记一定要查看日志,日志一般不会打印在控制台,在windows的

C:\Users\liukx\logs\sandbox 用户目录下。找到sandbox.log日志瞄两眼。

  • 懵逼的时候切记多看看。

  • 懵逼的时候切记多看看。

  • 懵逼的时候切记多看看。

你可能感兴趣的:(jvm-sandbox实战之windows调试)