前言在本系列专题的前几篇文章中,我们介绍了JMeter扩展开发的一些方法。但是在开发过程中还有一个环节需要处理,就是对写好的代码进行调试。一种方法是将开发的扩展与JMeter源代码一起调试。但是这种方式的缺点是需要将整个JMeter源码放在workspace中。如果新开发的扩展只是一个小插件,这就有点太重量级了。本文将介绍另一种相对轻量级的方式:使用Java远程调试(RemoteJavaApplication)来完成对自己开发的JMeter扩展的调试。过程先回忆一下开发好的JMeter扩展是如何部署到JMeter中的:首先编译扩展代码生成jar包,复制到JMeter扩展目录$JMETER_HOME/lib/ext,然后重启JMeter,就会发现新添加的扩展。为了支持JMeter的Java远程调试,首先修改JMeter启动时的JVM参数。用文本编辑器打开$JMETER_HOME/bin/jmeter.sh(如果是Windows操作系统,打开jmeter.bat);在jmeter.sh中找到JMeter启动的位置(这个位置一般在末尾),并在这个位置之前添加一行,开启指定端口的远程调试功能。下面参考配置在12345端口开启:JVM_ARGS="$JVM_ARGS-Xdebug-Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345"重启JMeter,如果配置的话没错,JMeter启动的控制台会打印类似下面的语句:Listeningfortransportdt_socketataddress:12345切换到开发JMeter扩展的IDE工作区,以Eclipse为例,选择扩展项目,然后右键Open“DebugConfigurations(调试配置)”,选择“RemoteJavaApplication”,新建一个远程调试配置,并配置JMeter运行所在机器的Host和端口号,如图下面,配置为本地运行的12345端口创建配置后,点击上面对话框中的Debug按钮,然后在Debug透视图中可以看到类似下面截图的内容,说明已经成功连接到本地JMeterJVM通过端口。在需要调试的代码处设置断点,对JMeter进行相应操作后,即可在Eclipse中看到相关调试内容,如下图:调试可以轻松控制JMeter插件在实际运行中的状态流程,更好的协助开发者完成扩展的开发。但是,也需要注意的是,这种方式有一个缺点:每次在开发中更改代码,然后再次调试时,更新后的JMeter扩展需要重新编译、打包、部署,并重启JMeter。如果在调试过程中频繁改动代码,这种调试方式就有些麻烦了。读者可以根据自己的实际情况选择更合适的调试方式。版权声明:本文为EMQ原创,转载请注明出处。
